0
我有一個名爲Purchase的模型和一個名爲TicketType的模型。購買可以有許多票據類型,而票據類型可以有許多購買。如何命名多對多關聯? [ActiveRecord]
所以我
class Purchase < ActiveRecord::Base
has_many :purchases_ticket_types, :class_name => 'PurchaseTicketType'
has_many :ticket_types, :through => :purchases_ticket_types
end
class TicketType < ActiveRecord::Base
has_many :purchases_ticket_types, :class_name => 'PurchaseTicketType'
has_many :purchases, :through => :purchases_ticket_types
end
class PurchaseTicketType < ActiveRecord::Base
set_table_name "purchases_ticket_types"
belongs_to :purchase
belongs_to :ticket_type
end
我知道一個表名purchases_ticket_types打算儘快麻煩的ActiveRecord的未能從駱駝套管類名標識正確的表名。我結束了不得不調用set_table_name。
但最糟糕的是不得不這樣做:
purchase = Purchase.find(1)
purchase.purchases_ticket_types.each do |purchase_ticket_type|
puts 'join contains quantity: ' + purchase_ticket_type.quantity
puts 'ticket type name is: ' + purchase_ticket_type.ticket_type.name
end
顯得多麼冗長和重複的讀取。一切正常,但看起來很難看。有沒有更好的方式來命名多對多的關聯以避免這種事情:purchase.purchases_ticket_types.first.ticket_type.name?
謝謝!
這是一個很好的答案 - 但我想我只想芯片因爲has_and_belongs_to_many也可以用於這些類型的關係。這裏是文檔:http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association – sosborn 2010-07-08 23:12:46
@sosborn我用'has_many,:通過',因爲這就是原來的問題,大概是因爲原始海報需要額外的連接模型的屬性,'has_and_belongs_to_many'不支持。 – 2010-07-09 08:05:44