4

これがどのように起こっているのかわかりませんが、列が存在しないと言っています:

SQLite3::SQLException: そのような列はありません: element.kind: SELECT COUNT(*) FROM "answers" INNER JOIN "elements" ON "elements"."id" = "answers"."element_id" WHERE "answers"."form_id " = 55 AND "要素"."種類" = 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使用したため、クエリの残りの部分も存在しないテーブルを使用して生成されることを期待していましたが、おそらくRailsは関連付けのために複数形になっています。.joins(:element).joins(:elements).joins()belongs_to

@form.answers.joins(:element).where(:elements => {:kind => 6})
于 2012-04-28T02:22:31.593 に答える