Hi
I have following models
-
employee
-
transaction
Requirement - A transaction has a dealer(employee) and a
driver(employee).
I experimented following
I have put -
/models/employee.rb :
has_many :transactions, :as => :dealer
has_many :transactions, :as => :driver
/models/transaction.rb :
belongs_to :dealer, :class => :employee, :foreign_key => :employee_id
belongs_to :driver, :class => :employee, :foreign_key => :employee_id
Transaction table has columns - dealer_id, driver_id,
Now the problem is how can I get something like @transaction.dealer.name
or
employee.transactions
I certainly know that my experiment has basic flaws of understanding
associations.
Please help me!
Thanks, that was a great help. Also tip of ‘transaction’ naming was very
useful one. Thanks again!
On 25 Jan 2009, at 04:09, Sachin K. wrote:
driver(employee).
I experimented following
I have put -
/models/employee.rb :
has_many :transactions, :as => :dealer
has_many :transactions, :as => :driver
you’re misusing :as here - that’s for something completely different
/models/transaction.rb :
belongs_to :dealer, :class => :employee, :foreign_key => :employee_id
belongs_to :driver, :class => :employee, :foreign_key => :employee_id
Transaction table has columns - dealer_id, driver_id,
If that’s the case then the :foreign_key option should be ‘dealer_id’
and ‘driver_id’ (and thus unnecessary as that’s the default).
The :class option is also supposed to be :class_name
I’ve got an example of something similar here:
Lastly, be wary of associations called transaction before Rails 2.3 -
the transaction method created by the association will stomp on an
internal method
Fred