2014-10-10 131 views
0

我看到Rails生成錯誤的查詢值,當我在where子句中使用枚舉col值,就像這樣(爲了清晰起見,我自己添加了)。 dominant_product_strategy是一個枚舉。Rails 4.1枚舉查詢

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

這似乎是你已經通過yoursef回答了你的問題。枚舉變量是一個哈希值:

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

值(整數)存儲在DB中,而字符串只是int值的表示。當您撥打self.dominant_product_strategy時,會得到dominant_product_strategy列中的表示形式(字符串),並以DB中的整數形式存儲。

我認爲你的第一個工作解決方案(self.attributes [「dominant_product_strategy」])很好。