2014-10-10 4 views
0

where 절에서 열거 형 col 값을 사용할 때 Rails가 잘못된 쿼리 값을 생성하는 것을보고 있는데, 이는이 (명확성을 위해 자동 추가됨)입니다. dominant_product_strategy은 enum입니다.Rails 4.1 enum query

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"]) 

문자열로 열거를보고, 다음의 정수 값으로 변환 제로. 어!

나는 뭔가를 놓친가요?

이것은 또한 작동합니다

MyModelwhere(dominant_product_strategy: MyModel.dominant_product_strategies[dominant_product_strategy]) 

답변

1

당신이 yoursef하여 질문에 대답 한 것 같다. 열거 형 변수는 해시입니다.

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

값 (정수)은 int 값을 나타내는 것으로 DB에 저장됩니다. self.dominant_product_strategy을 호출하면 dominant_product_strategy 열의 표현 (문자열)이 DB에 정수로 저장됩니다.

첫 번째 작업 솔루션 (self.attributes [ "dominant_product_strategy"])이 좋습니다.