如何在rails 4.1中添加补丁枚举?

时间:2014-08-04 11:27:32

标签: ruby-on-rails-4 enums

假设我有一个有枚举的课程

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

我想补丁枚举功能,所以我可以做

Course.statuses.capitalize

将返回所有状态的列表 - 大写且没有下划线。

我尝试了几件事,但似乎没有任何帮助。有什么想法吗?

由于

以下是我的尝试。我对猴子补丁的经验是有限的,所以不确定我是否在正确的道路上。

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

1 个答案:

答案 0 :(得分:0)

我没有看到猴子修补此问题,因为你想要的东西已经存在于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}