没有这样的列 - 当列存在时

时间:2012-04-28 01:17:07

标签: ruby-on-rails activerecord

不确定这是怎么回事,但它说该列不存在:

  

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。

1 个答案:

答案 0 :(得分:2)

该表格为elements而不是element由查询生成("element"."kind" = 6)。

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

我原本希望查询的其余部分也可以使用不存在的element表生成,因为您使用了.joins(:element)而不是.joins(:elements),但是Rails可能在.joins()内复数化1}}用于belongs_to关联。

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