Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

multiple belongs_to relationships between two classes in Rails

I have a Transaction class. Each object of this class includes one issuing account, one sending account and one receiving account. Each of these is an instance of Account class. In my Transaction table, I have issuer_id, sender_id and receiver_id.

How should I specify relationship between Transaction and Account so that I can call

transaction.issuer
transaction.sender
transaction.receiver

Thank you.

like image 665
AdamNYC Avatar asked Sep 14 '11 02:09

AdamNYC


1 Answers

Use :class_name to specify the class name, when it can't be guessed from the association 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

You can read more in the documentation.

like image 152
meagar Avatar answered Nov 05 '22 16:11

meagar