项目计数为has_many/belongs_to

bra*_*ick 2 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我有2个型号:制造商和汽车

汽车属于制造商,制造商有很多汽车

当人们正在寻找汽车时,我想向他们展示那些在列表中有汽车的制造商(隐藏没有汽车的制造商).

我向制造商添加了字段'count',但是不知道在添加/销毁Car时如何更好地保持它的最新状态?

Mau*_*res 5

由于您已有计数字段,只需将其配置添加到您的汽车型号:

class Car < ActiveRecord::Base
  belongs_to :manufacturer, :counter_cache => :counter
end
Run Code Online (Sandbox Code Playgroud)

现在,无论何时添加新车,该counter字段Manufacturer都将增加.您现在需要正确填写此字段,因为您已有数据库.

此外,如果您尚未定义该counter字段,Rails默认将使用名为cars_counter(而不是仅仅counter)的字段,然后在counter_cache定义中,您只能将其counter_cache => true命名为而不是将列命名为counter.