2013-05-07 6 views
-1
와 오류를 제공 곳과 모델을 포함

I가 다음과 같은 협회 :레일 : 포스트 그레스

ActiveRecord::StatementInvalid: PG::Error: ERROR: argument of WHERE must be type boolean, not type integer 

: 나는 다음과 같은 오류가

Menu.includes(:restaurant).where("restaurants.city_id", 3) :

Restaurant has_many Menus 
Menu belongs_to Restaurant 
Restaurant belongs_to City 
City has_many Restaurants 

다음 쿼리를 수행 여기서 내가 뭘 잘못하고 있니?

답변

1

.where의 구문이 올바르지 않습니다. 당신이 원한다면 .where("restaurants.city_id = ?", 3)

+0

레일즈 가이드에서 직접 가져 와서 "Post.includes (: comments) .where ("comments.visible ", true)"를 찾을 수 있습니다. - http://guides.rubyonrails.org/ active_record_querying.html –

+0

우연히 만 작동하는 것 같습니다. 조건이 부울 값인 경우 PostGres는이를 조건으로 처리하는 방법을 알고 있습니다 (쿼리 실행은'SELECT "comments". * FROM "comments"WHERE visible ').'.where ('comments.visible ', false)'를 실행하는 것과 같은 쿼리입니다. 이것은 당신이 기대하는 바가 아니기 때문입니다. – MrTheWalrus

+0

또한 같은 가이드가 언제 열심히로드 된 테이블에 대한 조건에 대해 토론하고 "하지마"라고 말하면 동의합니다. 협회에서 조건을 사용하려면 협회에 가입하십시오. – MrTheWalrus