Rails 4.1枚举查询

时间:2014-10-10 05:20:08

标签: ruby-on-rails

当我在where子句中使用enum col值时,我看到Rails生成了错误的查询值,就像这样(为了清楚起见,我自己添加了)。 dominant_product_strategy 是一个枚举。

def some_model_method_on_myModel
   MyModel.where(dominant_product_strategy: self.dominant_product_strategy)
end 

这会产生正确的值(同样,为了清晰起见,仅添加了自我):

MyModel.where(dominant_product_strategy: self.attributes["dominant_product_strategy"])

我猜Rails将枚举看作一个字符串,然后转换为整数值为零。 Ughhhhh!

我错过了什么吗?

这也有效:

MyModelwhere(dominant_product_strategy: MyModel.dominant_product_strategies[dominant_product_strategy])

1 个答案:

答案 0 :(得分:1)

好像你已经回答了你的问题。枚举变量是一个哈希:

{str1: int1, str2: int2, ...}

值(整数)存储在DB中,字符串只是int值的表示。当您调用self.dominant_product_strategy时,您将获得在{DB}中存储为整数的dominant_product_strategy列的表示(字符串)。

我认为你的第一个工作解决方案(self.attributes [" dominant_product_strategy"])没问题。