2012-01-11 2 views
0

문제의 라인은 다음과 같습니다Rails 3으로 업그레이드 한 후이 Rails 3 AREL 회선이 작동하지 않는 이유는 무엇입니까?

product_properties.includes(:property).where("properties.name = 'Label Description'").first 

그것은 "제품"모델에 존재하는 has_many : product_properties. 는 SQL을 생성하지만 빈 열을 선택하려고하기 때문에 MySQL의 오류를 던지고있다 :

SELECT `product_properties`.`` AS t0_r0, `product_properties`.`id` AS t0_r1, ... 

어떻게 빈 행의 SELECT 원인을 해결할 수 있습니까?

답변

0

답변을 찾았습니다. 단서는 위의 SELECT 문의 두 번째 열을보고 있습니다. 그것은 "id"입니다. 일반적으로 첫 번째 열입니다.

이 특정 테이블의 "id"가 기본 키로 설정되지 않았으므로 테이블에 기본 키가 없습니다. 레일스가 프라이 머리 키를 찾고, 찾을 수 없을 때 공백을 반환하게하는 AREL 변경 사항이있는 것 같습니다. 그로 인해 문제가 발생했습니다. 레일즈 버그인지 아닌지는 잘 모르겠습니다.

+1

잘 모르는 경우이 동작에 대한 티켓을 제출할 것입니다. 그들은 예상되는 행동이라면 그것을 닫을 것입니다. 한 사람이보고하지 않고 다른 사람이이 문제에 부딪치게하는 것보다 버그를 닫는 것이 좋습니다. – dkubb