如何在Ruby on Rails中控制器和模型之间共享常量

3

是否可以在控制器和模型之间共享常量?

例如,在 product.rb 中,我有以下代码:

PRODUCT_TYPES = %w[one two]

我希望PRODUCT_TYPES常量也能在控制器中使用。
3个回答

9
根据我的考虑,你的产品模型看起来像是:
 class Product < ActiveRecord::Base
      PRODUCT_TYPES = %w[one two]
 end

您可以在控制器中按如下方式访问给定的常量。
p.product_type == Product::PRODUCT_TYPES[:one]

3

我在这个答案中详细说明了各种可能性。

基本上你有三种可能:

  • 全局范围(初始化程序)
  • 应用程序范围(使用Rails创建的应用程序模块)
  • 类范围(在您想要的地方定义它们,并使用Class :: CONSTANT调用它们)

0

我们可以在控制器中通过以下方式访问模型常量...

class Invoice < ActiveRecord::Base
       STATUS_PAYABLE          = %w(APPROVED OPEN)
 end

Controller use like ..

 Invoice::STATUS_PAYABLE.include?('OPEN')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接