当我有一个记录实例时,如何从我的模型枚举中获取int值?

时间:2017-03-22 21:21:16

标签: ruby-on-rails activerecord

如何将Model枚举转换为INT值?

我正在尝试这样做:

class User < ActiveRecord::Base
  enum user_type: [:member, :super]
end

现在说我有一条用户记录,现在我想在另一个查询中使用user_type枚举值:

u = User.find_by_type(@user.user_type)

def self.find_by_user_type(user_type)
  User.where(user_type: user_type).take
end

这不起作用,因为 user.user_type正在返回&#34;成员&#34;或者&#34;超级&#34; ,我需要0或1。

有没有办法从@user实例获取Int值?

(Rails 4.x)

1 个答案:

答案 0 :(得分:2)

获取枚举类型的等效整数:

User.user_types[self.user_type] # returns integer value

如有必要,请将self替换为其他用户实例。