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}