Ruby on rails 4 如何在rails 4.1中对枚举进行修补?

Ruby on rails 4 如何在rails 4.1中对枚举进行修补?,ruby-on-rails-4,enums,Ruby On Rails 4,Enums,假设我有一个具有枚举的类 class Course < ActiveRecord::Base enum status: { active: 1, in_progress: 2, disabled: 3, ... } end 它将返回所有状态的列表-大写且不带下划线 我尝试了一些方法,但似乎没有任何效果。有什么想法吗 谢谢 下面是我试过的。我的猴子补丁经验有限,所以不确定我是否走上了正确的道路 module ActiveRecord module Enum def capi

假设我有一个具有枚举的类

class Course < ActiveRecord::Base
  enum status: { active: 1, in_progress: 2, disabled: 3, ... }
end
它将返回所有状态的列表-大写且不带下划线

我尝试了一些方法,但似乎没有任何效果。有什么想法吗

谢谢

下面是我试过的。我的猴子补丁经验有限,所以不确定我是否走上了正确的道路

module ActiveRecord
  module Enum
    def capitalize
      self.map{ |s| [s[0].capitalize, s[1]] }
    end
  end
end

我不认为猴子修补这个有什么意义,因为你想要的东西已经存在于Rails中了

class Course < ActiveRecord::Base
  enum status: { active: 1, in_progress: 2, disabled: 3 }
end

Course.statuses.transform_keys{|k| k.to_s.humanize}
# => {"Active": 1, "In progress": 2, "Disabled": 3}
课程{“活动”:1,“进行中”:2,“禁用”:3}

您可以发布您尝试过的内容吗?你有什么错误吗?不应该是
Course.status.capitalize
?没有。要获得状态列表,你必须说Course.status。。。假设我想用所有可用状态填充select,但我希望所有状态都大写。有很多方法可以在不使用猴子补丁的情况下实现,但我认为这将是一个很好的练习,因为我想在很多地方实现这一点,并且在代码中使用map函数会不必要地膨胀它。
class Course < ActiveRecord::Base
  enum status: { active: 1, in_progress: 2, disabled: 3 }
end

Course.statuses.transform_keys{|k| k.to_s.humanize}
# => {"Active": 1, "In progress": 2, "Disabled": 3}