4

不知道这是怎么发生的,但它说该列不存在:

SQLite3::SQLException:没有这样的列:element.kind:SELECT COUNT(*) FROM "answers" INNER JOIN "elements" ON "elements"."id" = "answers"."element_id" WHERE "answers"."form_id " = 55 AND "元素"."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。

4

1 回答 1

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})
于 2012-04-28T02:22:31.593 回答