Rails中两个类之间的多个belongs_to关系

时间:2011-09-14 02:29:02

标签: ruby-on-rails activerecord active-relation

我有一个Transaction类。此类的每个对象包括一个发卡帐户,一个发送帐户和一个接收帐户。其中每个都是Account类的一个实例。在我的Transaction表中,我有issuer_id,sender_id和receiver_id。

我应该如何指定交易和账户之间的关系,以便我可以调用

transaction.issuer
transaction.sender
transaction.receiver

谢谢。

1 个答案:

答案 0 :(得分:16)

使用:class_name指定类名称,如果无法从关联名称中猜到:

class Transaction
  belongs_to :issuer,   :class_name => 'Account'
  belongs_to :sender,   :class_name => 'Account'
  belongs_to :receiver, :class_name => 'Account'
end

class Account
  has_many :issued_transactions,   :foreign_key => :issuer,   :class_name => 'Transaction'
  has_many :sent_transactions,     :foreign_key => :sender,   :class_name => 'Transaction'
  has_many :received_transactions, :foreign_key => :receiver, :class_name => 'Transaction'
end

您可以在documentation中阅读更多内容。