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