我有一个 Rails 模型,我使用两个has_one
关系:requester
and friend
。在控制台中我使用:
f = FriendRequest.all
f[0].requester
I get 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
with belongs_to
。谢谢!
has_one :requester, :class_name => "User", :foreign_key => "requester_id"
这一行(来自您发布的代码)表明requester
is a User
,和表users
应包含一列requester_id
这是外键friend_requests
记录。 Rails 错误消息指出该列requester_id
不存在(您必须通过创建它移民 http://guides.rubyonrails.org/migrations.html).
在这种情况下,使用
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 关系指南 http://guides.rubyonrails.org/association_basics.html有关之间差异的更多信息has_one
and belongs_to
,以及如何使用它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)