Ruby on Rails: 从 include do 获取变量

18 浏览
0 Comments

Ruby on Rails: 从 include do 获取变量

昨天我在Rails 4 Enum上提了一个问题并得到了答案。

所以我在# app / models / concerns / my_enums.rb中定义了全局Status枚举,如下所示:

module MyEnums
  extend ActiveSupport::Concern
  included do
    enum status: [:active, :inactive, :deleted]
  end
end

现在我正在尝试从控制器中获取我Status枚举中定义的所有属性,但无法访问枚举,因为它在模块被包含时初始化,如果我在控制器中包含它,我将得到以下错误:

undefined method `enum' for HomeController:Class

如何在我的控制器中获取这个(例如Product.statuses)?

=> {"active"=>0, "inactive"=>1, "deleted"=>2} 

0
0 Comments

问题原因:无法将这个模块包含到控制器中。

解决方法:可以尝试以下方式:

module MyEnums
  extend ActiveSupport::Concern
  Statuses = [:active, :inactive, :deleted]
  included do
    enum status: Statuses
  end
end

然后在控制器中使用:

MyEnums::Statuses

0