Вы можете использовать свойство :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
и recipient_id
для внешних ключей,но в вашем коде у вас есть :foreign_key => 'sender'
и :foreign_key => 'recipient'
.Вы пытались изменить их на :foreign_key => 'sender_id'
и :foreign_key => 'recipient_id'
?Итак:
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