所以使用has_many:through关联的标准方法是使用Active Record Association Guide中的Physician-Appointment-Patient模型,对吧?它基本上是一个更详细的HABTM,两个模型有一个has_many:through和连接器模型有两个belongs_to。现在,在我目前的项目中,我有一个这样的模型结构:
class Cart < ActiveRecord::Base
has_many :line_items, through: line_item_groups
has_many :line_item_groups
end
class LineItemGroup < ActiveRecord::Base
belongs_to :cart
has_many :line_items
end
class LineItem < ActiveRecord::Base
belongs_to :line_item_group
has_one :cart, through: line_item_group
end
工作正常。但现在我想要一个Cart上的line_item_count,并且无法弄清楚我应该在哪里添加counter_cache属性。
感谢任何帮助: - )
答案 0 :(得分:1)
首先在购物车表中添加line_item_count字段,然后在LineItem模型中添加
class LineItem < ActiveRecord::Base
before_create :increment_counter
before_destroy :decrement_counter
def increment_counter
Cart.increment_counter(:line_item_count, cart.id)
end
def decrement_counter
Cart.decrement_counter(:line_item_count, cart.id)
end
end
我没试过,但我认为它会解决你的问题。