has_many有两个foreign_keys

时间:2012-03-18 06:48:13

标签: ruby-on-rails

我知道关于这个问题有很多问题,但我认为我的情况有点不同。

使用rails 2.3.8

我有两个模型,User和Message。

表消息包含sender_id和recipient_id列以及两个引用用户表。我可以这样做:

class User < ActiveRecord::Base

  has_many :messages_as_sender, :class_name => 'Message', :foreign_key => 'sender_id'
  has_many :messages_as_recipient, :class_name => 'Message', :foreign_key => 'recipient_id'

  def messages
     messages_as_sender + messages_as_recipient
  end
end

在大多数情况下,它可能就够了,但如果我想这样做会怎么样:

user.messages.all(:limit => 10)
or
user.messages.all(:conditions => "some condition")

Rails为此提供了一些东西?

更新

我希望有一些更清楚的东西但我最终会像gayavat所说的那样感谢

1 个答案:

答案 0 :(得分:2)

类似的东西:

def self.messages
  Messages.all(:conditions => ["sender_id = ? OR recipient_id = ?", self.id, self.id])
end