Ruby on rails Rails枚举映射到可显示文本

Ruby on rails Rails枚举映射到可显示文本,ruby-on-rails,enums,Ruby On Rails,Enums,Rails 4枚举实现非常适合创建状态字段,例如 class User < ActiveRecord::Base enum status: [:goodstanding, :outstanding] 显示我的文本。关于如何使用较新的枚举类型执行此操作,您有什么建议吗?是的,这可以在rails 4.1+中执行,但它的行为出乎意料,并且已在rails 5分支中修复 资料来源: 例如: class User enum name: { foo: 'myfoo', bar:

Rails 4枚举实现非常适合创建状态字段,例如

class User < ActiveRecord::Base
  enum status: [:goodstanding, :outstanding]

显示我的文本。关于如何使用较新的枚举类型执行此操作,您有什么建议吗?

是的,这可以在rails 4.1+中执行,但它的行为出乎意料,并且已在rails 5分支中修复

资料来源:

例如:

class User
  enum name: {
    foo: 'myfoo',
    bar: 'mybar'
  }
end
现在,当您这样做时:

u = User.new(name: 'foo')
u.save
u = User.last

u.name
 => "foo"

u[:name]
 => "myfoo"
然后它将执行:

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.new(name: 'foo')
u.save
u = User.last

u.name
 => "foo"

u[:name]
 => "myfoo"
我试过上面的方法。虽然也有各种各样的宝石可供选择,但我从未使用过它们,但它们可能对您有所帮助:

  • 资料来源:


    希望这能有所帮助。

    +1适用于Rails 5中的fixed in Rails。我在其他地方看到了这个答案,也看到了一些这样的珍宝(不是列举)。我只是不想用宝石来做这个。期待在Rails 5中使用它,谢谢。有人能用一个更好的例子来更新这个问题吗?作为一个新手,这个例子非常令人困惑。