gpt4 book ai didi

ruby-on-rails - 模型中的自定义 foreign_key 给出 PG::Error column does not exist - Rails

转载 作者:行者123 更新时间:2023-11-29 13:30:57 25 4
gpt4 key购买 nike

我有一个 VideoCollection 模型,它将包含来自另一个模型(称为 VideoWork)的许多记录,使用 has_many 关系。 VideoCollection模型继承自Collection模型使用单表继承,而VideoWork模型继承自Work模型.

当我尝试调用属于 video_collection 的 video_works 时遇到问题。在我的 video_collection#show 操作中,我使用以下内容来尝试显示收藏的作品:

def show
@video_collection = VideoCollection.find(params[:id])
@collections = @video_collection.children
@works = @video_collection.video_works
end

但是当我尝试在 show View 中使用 @works 时,我得到以下信息:

PG::Error: ERROR:  column works.video_collection_id does not exist
SELECT "works".* FROM "works" WHERE "works"."type" IN ('VideoWork') AND "works"."video_collection_id" = $1

##(Error occurs in the line that contains <% @works.each do |work| %>)


我的模型文件:

#----app/models/video_collection.rb----
class VideoCollection < Collection
has_many :video_works
end

#----app/models/video_work.rb----
class VideoWork < Work
belongs_to :folder, class_name: "VideoCollection", foreign_key: "folder_id"
end

“父”模型:

#----app/models/collection.rb - (VideoCollection inherits from this)
class Collection < ActiveRecord::Base
end

#----app/models/work.rb - (VideoWork inherits from this)
class Work < ActiveRecord::Base
end

架构文件:

#----db/schema.rb----
create_table "works", force: true do |t|
t.string "header"
t.string "description"
t.string "type"
t.string "folder_id"
end

create_table "collections", force: true do |t|
t.string "type"
t.datetime "created_at"
t.datetime "updated_at"
t.text "ancestry"
t.string "name"
t.string "tile_image_link"
end


我的问题

我假设因为我在 works 表中有一个 folder_id 列,所以我应该能够正确设置 belongs_to 关系,但似乎 Rails 仍然希望我有一个 video_collection_id 列。我不希望使用像 video_collection_id 这样的特定内容作为 works 表中的外键,因为我需要建立其他关系(例如:photo_collection has_many photo_works 等)。

我在这里做错了什么?

最佳答案

我并没有真正使用 has_many 和 belongs_to 与标准不同的外键,但根据文档我会这样做:

class VideoCollection < Collection
has_many :video_works, foreign_key: "folder_id"
end

class VideoWork < Work
belongs_to :folder, class_name: "VideoCollection", foreign_key: "folder_id"
end

您的 Pg 错误表明关联正在寻找“video_collection_id”而不是“folder_id”

Guides (4.3.2.5章)

关于ruby-on-rails - 模型中的自定义 foreign_key 给出 PG::Error column does not exist - Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23491787/

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