gpt4 book ai didi

ruby-on-rails - Rails has_one具有类名和外键

转载 作者:行者123 更新时间:2023-12-03 09:24:36 25 4
gpt4 key购买 nike

我有一个Rails模型,它使用两个has_one关系:requesterfriend。在控制台中使用时:

f = FriendRequest.all
f[0].requester

我得到 ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: users.requester_id: SELECT "users".* FROM "users" WHERE "users"."requester_id" = 4 LIMIT 1

我真的不知道如何使用类名和指定记录的键来指定“has_one”关系。这是我的模型:
class FriendRequest < ActiveRecord::Base
has_one :requester, :class_name => "User", :foreign_key => "requester_id"
has_one :friend, :class_name => "User", :foreign_key => "friend_id"
end

我该怎么办?在 belongs_to关系中,我使用了相同的方法,显然是用 has_one替换了 belongs_to。谢谢!

最佳答案

has_one :requester, :class_name => "User", :foreign_key => "requester_id"

此行(来自您发布的代码)指示 requesterUser,并且表 users应包含一列 requester_id,这是指向 friend_requests记录的外键。 rails错误消息指出列 requester_id不存在(您必须通过 migration创建它)。

在这种情况下,请使用
rails generate migration AddRequesterIdToUsers requester_id:integer

它将生成迁移:
class AddRequesterIdToUsers < ActiveRecord::Migration
def change
add_column :users, :requester_id, :integer
end
end

并使用 rake db:migrate运行它们的迁移。

查看 Rails Relation Guide以获得有关 has_onebelongs_to之间的区别以及如何使用它们的更多信息。

关于ruby-on-rails - Rails has_one具有类名和外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10664677/

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