Ruby on rails 如何比较控制器中的枚举模型属性?

Ruby on rails 如何比较控制器中的枚举模型属性?,ruby-on-rails,enums,ruby-on-rails-4.1,Ruby On Rails,Enums,Ruby On Rails 4.1,我有以下模型对象: class ModelObj < ActiveRecord::Base enum type: [:value_a, :value_b] end 根据,可以通过多种方式访问枚举值。一些例子: m.type # => 'value_a' m.value_a? # => true m.value_b? # => false 您提供了控制器代码,您说“不工作”,是否需要使用字符串比较而不是符号?以下是我为使其工作所做的: class SomeC

我有以下模型对象:

class ModelObj < ActiveRecord::Base
  enum type: [:value_a, :value_b]
end
根据,可以通过多种方式访问枚举值。一些例子:

m.type     # => 'value_a'
m.value_a? # => true
m.value_b? # => false

您提供了控制器代码,您说“不工作”,是否需要使用字符串比较而不是符号?

以下是我为使其工作所做的:

class SomeController < ApplicationController
  def index
    m = ModelObj.find(...)
    if (ModelObj.types[m.type] == ModelObj.types[:value_a])
      # do this ...
    end
  end
end
class SomeController
您可以在以下位置将其视为当前的最后一个示例:

Conversation.where(“状态?”,Conversation.status[:存档])


但问题是它是一个序数值,而m.type是字符串值。

控制器中
m
的值是什么?
class SomeController < ApplicationController
  def index
    m = ModelObj.find(...)
    if (ModelObj.types[m.type] == ModelObj.types[:value_a])
      # do this ...
    end
  end
end