Sql rails没有这样的列错误

Sql rails没有这样的列错误,sql,ruby-on-rails,migration,Sql,Ruby On Rails,Migration,我有以下应用程序。一部电影有很多评论,一个影迷有很多评论。 当我尝试将评论与电影相关联时,会出现以下错误 Review Load (0.1ms) SELECT "reviews".* FROM "reviews" WHERE "reviews"."movie_id" = 5 SQLite3::SQLException: no such column: reviews.movie_id: SELECT "reviews".* FROM "reviews" WHERE "reviews"

我有以下应用程序。一部电影有很多评论,一个影迷有很多评论。 当我尝试将评论与电影相关联时,会出现以下错误

Review Load (0.1ms)  SELECT "reviews".* FROM "reviews" WHERE "reviews"."movie_id" = 5
SQLite3::SQLException: no such column: reviews.movie_id: SELECT "reviews".* FROM     "reviews"  WHERE "reviews"."movie_id" = 5
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: reviews.movie_id:     SELECT "reviews".* FROM "reviews"  WHERE "reviews"."movie_id" = 5
在使用SQLGUI编辑器之后,我发现应该使用正确的查询

SELECT "reviews".* FROM "reviews" WHERE "movie_id" = 5
review.rb

class Review < ActiveRecord::Base
  belongs_to :movie
  belongs_to :moviegoer
  attr_protected :moviegoer_id
end

我做错了什么?为什么rails查询“评论”“电影id”而不是“电影id”?

迁移中的列名错误。rails的惯例是外键是单键。如果它们不是,那么您需要通过关联上的选项散列告诉rails外键是什么

要么回滚迁移,修复列名(moviewers\u id也错误),然后再次迁移,要么告诉rails外键

Class Review < ActiveRecord::Base
  belongs_to :movie, :foreign_key => 'movies_id'
  belongs_to :moviegoer, :foreign_key => 'moviegoers_id'
end
Class Review“movies\u id”
属于:影迷,:外键=>“影迷id”
结束

同样的情况也会发生在两种车型的许多方面。

正如您在评论表中看到的,没有“电影id”列,而是有一个“电影id”。
Class Review < ActiveRecord::Base
  belongs_to :movie, :foreign_key => 'movies_id'
  belongs_to :moviegoer, :foreign_key => 'moviegoers_id'
end