2012-04-28 50 views
3

不知道這是怎麼發生的,但它說的列不存在:沒有這樣的列 - 如果列中存在

的SQLite3 ::的SQLException:沒有這樣的列:element.kind:SELECT COUNT(*) FROM「answers」INNER JOIN「elements」ON「elements」。「id」=「answers」。「element_id」WHERE「answers」。「form_id」= 55 AND「element」。「kind」= 6

# 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錯誤。不知道發生了什麼事。有什麼想法,我失蹤了?

謝謝!

僅供參考我正在使用ruby 1.9.3運行rails 3.2.3。

+0

您可以添加schema.rb文件的內容嗎?也許你錯過了一個外鍵。 – 2012-04-28 16:24:47

回答

2

該表格是elements而不是element,由查詢("element"."kind" = 6)生成。

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

我本來期望用不存在的element表以及生成查詢的其餘部分,因爲你使用.joins(:element)代替.joins(:elements)但也許Rails正在複數化內部.joins()belongs_to關聯。

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

不是。由於它是'belongs_to',它只是':element'。這返回'沒有找到名爲「元素」的關聯。不過謝謝。 – Marc 2012-04-28 16:13:12

+0

@Marc對不起 - 意思是最初添加這個 - 它是導致問題的'.where()' - 你是否嘗試離開'.join(:element)',因爲你已經擁有了它,但是複數'.where(:元素)'?生成的SQL語句意味着這應該起作用。 – 2012-04-28 16:24:09

+0

是的,確實有效!非常感謝。 – Marc 2012-04-28 20:42:59

相關問題