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

时间:2014-01-04 11:33:58

标签: ruby-on-rails

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

e.g。在product.rb我有

PRODUCT_TYPES = %w[one two]

我希望PRODUCT_TYPES也能在控制器中保持不变。

3 个答案:

答案 0 :(得分:5)

根据我的考虑,您的产品模型看起来像

 class Product < ActiveRecord::Base
      PRODUCT_TYPES = %w[one two]
 end

您可以在控制器中访问给定常量,如下所示

p.product_type == Product::PRODUCT_TYPES[:one]

答案 1 :(得分:3)

我深刻解释了各种可能性in this answer

你基本上有三种可能性:

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

答案 2 :(得分:0)

我们可以在下面的Controller中访问模型常量...

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

Controller use like ..

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