更新另一个字段以及 rails 中的 increment_counter 方法
Posted
技术标签:
【中文标题】更新另一个字段以及 rails 中的 increment_counter 方法【英文标题】:Update an another field along with the increment_counter method in rails 【发布时间】:2021-04-12 20:51:04 【问题描述】:我的 Customer 模型上有一个 cache_counter 字段,即 orders_count。该字段只能使用 increment_counter 方法更新。
Customer.increment_counter(:orders_count, customer_id)
这将增加客户的订单数。我的 Customer 模型中已经有另一个字段 last_updated_at ,我想沿着 increment_counter 方法更新这个字段。
这怎么可能?
【问题讨论】:
【参考方案1】:如果您只需要在last_updated_at
中设置tiemstamp,您可以使用belongs_to
关联中的touch
选项为您的订单。类似的,
class Order < ApplicationRecord
belongs_to :customer, touch: :last_updated_at
end
您可以阅读更多关于它的信息here
【讨论】:
【参考方案2】:increment_counter
方法接受第三个可选参数,允许更新时间戳列。因此,您只需将方法调用更改为:
Customer.increment_counter(:orders_count, customer_id, touch: :last_updated_at)
【讨论】:
在 :last_updated_at 中分配的值是多少,因为我需要 Time.now() 作为值。 它将在我们的应用程序用于created_at
或updated_at
列的同一时区分配Time.now
,通常是UTC以上是关于更新另一个字段以及 rails 中的 increment_counter 方法的主要内容,如果未能解决你的问题,请参考以下文章