您可以使用:class_name
属性来设置哪个类用作外键:
class Message < ActiveRecord::Base
has_one :sender, :class_name => User
has_one :recipient, :class_name => User
end
class User < ActiveRecord::Base
belongs_to :sent_messages, :class_name => Message
belongs_to :received_messages, :class_name => Message
end
另外,你说你正在使用sender_id
and recipient_id
对于外键,但在您的代码中您有:foreign_key => 'sender'
and :foreign_key => 'recipient'
。您是否尝试过将它们更改为:foreign_key => 'sender_id'
and :foreign_key => 'recipient_id'
? So:
class Message < ActiveRecord::Base
has_one :sender, :class_name => User, :foreign_key => 'sender_id'
has_one :recipient, :class_name => User, :foreign_key => 'recipient_id'
end
class User < ActiveRecord::Base
belongs_to :sent_messages, :class_name => Message, # ...etc
belongs_to :received_messages, :class_name => Message, # ...etc
end