0

在 counter_culture 方法中定义 column_names 时,是否可以进行深度关联?在文档和示例中,它始终是属于用于确定 column_names 的模型的属性。但是,如果属性属于关联模型怎么办?

例如,这有效

# Account model
counter_culture :user,
  column_name: Proc.new { |account| account.has_billable_hours? ? 'billed_hours_sum' : nil },
  delta_column: 'billed_hours',
  column_names: { ["account.billed_hours > ?", 0] => "billed_hours_sum" }

相关例子

# Account model
counter_culture :user,
  column_name: Proc.new { |account| account.clients.has_billable_hours? ? 'billed_hours_sum' : nil },
  delta_column: 'billed_hours',
  column_names: { ["accounts.clients.billed_hours > ?", 0] => "billed_hours_sum" }

如果,对于上述情况,你可以(你不能)在 column_names 方法中使用连接,它看起来像这样

 joins(:account=>:client).where("accounts.clients.billed_hours > ?", 0)

第二个例子说明了我的问题。当需要评估的属性不属于父模型,而是关联模型时,如何定义 column_names?

4

1 回答 1

0

只有在调用 counter_culture_fix_counts 时才需要 column_names。因此,我只是从方法调用中删除了 column_names 选项,并创建了一个 rake 任务来手动更新该计数器/列。

于 2014-11-09T21:10:06.110 回答