为什么不使用counter_cache

时间:2014-02-27 07:54:15

标签: ruby-on-rails activerecord

class FixedLineItem < AR

  belongs_to :fee_table, :class_name => 'FixedFeeTable',
                         :foreign_key => 'fixed_fee_table_id',
                         :inverse_of => :line_items,
                         :counter_cache => :fixed_line_items_count
end

class FixedFeeTable < AR

  has_many :line_items, :class_name => 'FixedLineItem', 
                        :inverse_of => :fee_table                         
end

鉴于上述情况,为什么@ fixed_fee_table.line_items.size仍然可以访问数据库?我可以看到它在控制台中执行COUNT操作。

如果我将has_many关联重命名为has_many:fixed_line_items,它将按预期工作。

我错过了某处的选项吗?我不能通过谷歌搜索找到任何提及。

修改

这是在轨道3.2.14

和我的两个表的架构

create_table "fixed_fee_tables", :force => true do |t|
t.string  "kind"
t.integer "total_amount_cents"
t.integer "fee_summary_id"
t.string  "currency"
t.integer "final_total_amount_cents"
t.integer "fixed_line_items_count",   :default => 0, :null => false
end

create_table "fixed_line_items", :force => true do |t|
t.string   "description"
t.integer  "quantity"
t.integer  "price_cents"
t.integer  "fixed_fee_table_id"
t.datetime "created_at",             :null => false
t.datetime "updated_at",             :null => false
t.integer  "amount_cents"
t.integer  "position"
t.integer  "total_adjustment_cents"
t.string   "currency"

0 个答案:

没有答案