pme*_*ino 29 activerecord ruby-on-rails foreign-keys
我有一个Rails模型,我使用两个has_one关系:requester和friend.在控制台中我使用:
f = FriendRequest.all
f[0].requester
Run Code Online (Sandbox Code Playgroud)
我得到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
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?在一段belongs_to关系中,我使用相同的,明显替换has_one为belongs_to.谢谢!
Bal*_*ick 35
has_one :requester, :class_name => "User", :foreign_key => "requester_id"
Run Code Online (Sandbox Code Playgroud)
此行(来自您发布的代码)表示该行requester是a User,并且该表users应包含一列requester_id作为friend_requests记录的外键.rails错误消息指出该列requester_id不存在(您必须通过迁移创建它).
在这种情况下,使用
rails generate migration AddRequesterIdToUsers requester_id:integer
Run Code Online (Sandbox Code Playgroud)
它将生成迁移:
class AddRequesterIdToUsers < ActiveRecord::Migration
def change
add_column :users, :requester_id, :integer
end
end
Run Code Online (Sandbox Code Playgroud)
然后用它们运行它们rake db:migrate.
看看Rails的关系指南对之间的差异的更多信息has_one,并belongs_to,以及如何使用它们.