Rails has_one与类名和外键

我有一个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  "User", :foreign_key => "requester_id" has_one :friend, :class_name => "User", :foreign_key => "friend_id" end 

我怎么能这样做? 在belongs_to关系中,我使用相同的,显然用belongs_to替换has_one 。 谢谢!

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

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

在这种情况下,使用

 rails generate migration AddRequesterIdToUsers requester_id:integer 

它将生成迁移:

 class AddRequesterIdToUsers < ActiveRecord::Migration def change add_column :users, :requester_id, :integer end end 

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

有关has_onebelongs_to之间差异以及如何使用它们的更多信息,请参阅Rails关系指南 。