2013-10-08 1 views
4

레일에 hstore 및 postgresql을 사용하여 제품 출시일을 포함한 제품 정보를 저장합니다. 이제 특정 연도 전후에 출시 된 모든 제품을 쿼리 할 수 ​​있기를 원합니다. 내가 사용하는 '데이터'hstore 열에서 올해 필드를 포함하는 모든 레코드를 조회 할 수 있어요 : 연도 값을 hstore하기 때문에 hstore 및 레일을 사용하는 것보다 더 큰 값 찾기

Product.where("data ? 'year'") 

문자열로 저장됩니다. 따라서, 나는 X보다보다 크 년 기록/찾기 위해 정수로 올해 캐스트 입력 시도 : 작업하는

Product.where("(data ? 'year')::int > 2011") 
그러나

,이하지 않는 것, 나는 항상의 빈 상태 (empty)의 배열이 결과는 돌아온다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 이것을 할 또 다른 방법이 있습니까?

+4

난 당신이 찾고있는 운전자가'생각 ->'. 그래서, 어디에서 ("(data -> 'year') :: int> 2011")'시도해보십시오. http://www.postgresql.org/docs/9.3/static/hstore.html – j03w

+0

-> 사용은 완벽하게 작동합니다! 원하는 경우 답변을 추가 할 수 있습니다. – graphmeter

+0

j03w, 고맙습니다. – chourobin

답변

1

나는 당신이 찾고있는 통신 수는 ->이라고 생각합니다.

그래서,이 시도 :

where("(data -> 'year')::int > 2011") (jO3w의 코멘트에서)

관련 문제