Rails 5 通过整数值获取枚举键
Rails 5 get enum key via integer value
我有一个具有以下枚举的模型:
class User < ApplicationRecord
enum user_type: [:api_user, :web_user]
end
当它被保存到数据库中时,它会按预期使用整数值保存它。然后我有一个函数接受这样的枚举(在控制器中):
do_something_useful(type: User.user_types[:web_user], user: user)
def do_something_useful(options)
some_enum_value = options[:type]
user = options[:user]
# Not a practical example. Just an example to demonstrate the issue.
# Should return Hello, User! You are a web_user type.
# But returns, Hello, User! You are a 1 type.
'Hello, #{user.name}! You are a #{some_enum_value} type.'
end
我遇到的问题是选项[:type] 传递的是整数值。我想通过整数获取 User.user_type 的键值。这可能吗?
再次感谢。
好吧,进行了更多搜索并找到了这个解决方案:
User.user_types.key(options[:type])
这将 return 密钥。
这是最简单的方法吗?或者其他更好的解决方案?
我有一个具有以下枚举的模型:
class User < ApplicationRecord
enum user_type: [:api_user, :web_user]
end
当它被保存到数据库中时,它会按预期使用整数值保存它。然后我有一个函数接受这样的枚举(在控制器中):
do_something_useful(type: User.user_types[:web_user], user: user)
def do_something_useful(options)
some_enum_value = options[:type]
user = options[:user]
# Not a practical example. Just an example to demonstrate the issue.
# Should return Hello, User! You are a web_user type.
# But returns, Hello, User! You are a 1 type.
'Hello, #{user.name}! You are a #{some_enum_value} type.'
end
我遇到的问题是选项[:type] 传递的是整数值。我想通过整数获取 User.user_type 的键值。这可能吗?
再次感谢。
好吧,进行了更多搜索并找到了这个解决方案:
User.user_types.key(options[:type])
这将 return 密钥。
这是最简单的方法吗?或者其他更好的解决方案?