gpt4 book ai didi

sql - rails 没有这样的列错误

转载 作者:行者123 更新时间:2023-12-04 05:09:40 26 4
gpt4 key购买 nike

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

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

使用 sql gui 编辑器后,我发现正确的查询应该是
SELECT "reviews".* FROM "reviews" WHERE "movie_id" = 5

评论.rb
class Review < ActiveRecord::Base
belongs_to :movie
belongs_to :moviegoer
attr_protected :moviegoer_id
end

movie.rb 和 moviegoer.rb 有

has_many :reviews



在他们。
模式文件
ActiveRecord::Schema.define(:version => 20130222225620) do

create_table "moviegoers", :force => true do |t|
t.string "name"
t.string "provider"
t.string "uid"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end

create_table "movies", :force => true do |t|
t.string "title"
t.string "rating"
t.text "description"
t.datetime "release_date"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end

create_table "reviews", :force => true do |t|
t.integer "potatoes"
t.text "comments"
t.integer "moviegoers_id"
t.integer "movies_id"
end

end

我做错了什么?为什么 rails 查询 "reviews"."movie_id"而不仅仅是 "movie_id"?

最佳答案

您在迁移中使用了错误的列名称。 rails 约定是外键是单数。如果不是,那么您需要通过关联上的选项散列告诉 rails 外键是什么。

要么回滚你的迁移,修复列名(moviegoers_id 也是错误的)然后再次迁移,或者告诉 rails 外键。

Class Review < ActiveRecord::Base
belongs_to :movie, :foreign_key => 'movies_id'
belongs_to :moviegoer, :foreign_key => 'moviegoers_id'
end

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

关于sql - rails 没有这样的列错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15035120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com