2012-04-28 4 views
3

확실하지 존재하는 경우 :그러한 열 없습니다 - 열이 일어나고하지만 열이 존재하지 않는 말을 어떻게

sqlite3를 ::되는 SQLException : 그런 칼럼 : element.kind : SELECT COUNT (*) "kind"= 6

"kind"= 6 "form_id"= 55 AND "element". "id"= "answers"
# element.rb 
class Element < ActiveRecord::Base 
    has_many :answers 
end 

# answer.rb 
class Answer < ActiveRecord::Base 
    belongs_to :element 
    belongs_to :form 
end 

class Form < ActiveRecord::Base 
    has_many :answers 
end 

하지만 실행하면

@form.answers.joins(:element).where(:element => {:kind => 6}) 

위의 SQL 오류가 발생합니다. 무슨 일이 일어나고 있는지 잘 모르겠다. 내가 누락 된 것에 대한 생각?

감사합니다.

참고 : 저는 3.2.3의 ruby ​​1.9.3을 사용하고 있습니다.

+0

schema.rb 파일의 내용을 추가 할 수 있습니까? 어쩌면 외래 키가 누락 된 것일 수 있습니다. –

답변

2

쿼리 테이블 ("element"."kind" = 6)에 의해 생성 된 element 대신 표가 elements입니다. 당신이 .joins(:element) 대신 .joins(:elements)을 사용하지만, 아마도 레일이 belongs_to 연관에 대해 .joins() 내부 복수화하기 때문에

@form.answers.joins(:elements).where(:elements => {:kind => 6}) 

가 나는 쿼리의 나머지 부분뿐만 아니라 존재하지 않는 element 테이블을 사용하여 생성 될 것으로 예상했을 것이다.

@form.answers.joins(:element).where(:elements => {:kind => 6}) 
+0

아니요. 그것은'belongs_to'이기 때문에 단지': element'입니다. 반환 된'Association named '요소를 찾을 수 없습니다. 그래도 고마워. – Marc

+0

@Marc 죄송합니다. 처음에 이것을 추가 할 예정이었습니다. 문제를 일으키는'.where() '입니다. 이미 가지고 계신대로'.join (: element)'을 남기려고 했습니까? 요소)'? 생성 된 SQL 문은 이것이 작동해야 함을 의미합니다. –

+0

예, 작동했습니다! 정말 고마워. – Marc

관련 문제