Rails 4枚举实现非常适合创建状态字段,例如
class User < ActiveRecord::Base
enum status: [:goodstanding, :outstanding]
但是,如果我想根据状态显示文本,则此文本映射应位于一个位置,并且枚举不提供映射到文本的解决方案。
这是我之前的事情
class User < ActiveRecord::Base
STATUS = {
:outstanding => "Outstanding balance",
:goodstanding => "In good standing"
}
允许我这样做
User::STATUS[user.status] # "In good standing"
显示我的文字。有关如何使用较新的枚举类型执行此操作的任何建议吗?
答案 0 :(得分:2)
是的,这可以在rails 4.1+中完成,但它的行为意外,并已在rails 5分支中修复。
来源:https://github.com/rails/rails/issues/16459
例如:
class User
enum name: {
foo: 'myfoo',
bar: 'mybar'
}
end
现在你做的时候:
u = User.new(name: 'foo')
u.save
然后它将执行:
INSERT INTO `users` (`name`, `created_at`, `updated_at`) VALUES ('myfoo', '2015-07-20 04:53:16', '2015-07-20 04:53:16')
foo
已插入myfoo
。现在你做的时候:
u = User.last
u.name
=> "foo"
u[:name]
=> "myfoo"
我已经尝试了以上内容。虽然有各种各样的宝石可供使用,但我从未使用它们,但可能会帮助你: