Rails主动记录回调,该回调是从数据库中检索值后触发后的



是否有一个主动记录回调,可以让我在某些DB字段取回其值后立即设置一个非DB字段?我需要在数据库检索后进行操作,因为我需要计算非DB字段的值。

我也欢迎其他方法来做到这一点。具体来说,我有一个days_ago字段是非DB,然后我只想在Create_at可用后才创建它,并且我必须在模型类中进行此操作。

您应该使用after_find

after_find :set_days_ago
def set_days_ago
  self.days_ago = DateTime.now - self.created_at.to_datetime if self.created_at
end

听起来您可能想要一个'懒惰的' days_ago字段。实际需要时,只能计算days_ago值,通过将类似方法添加到您的模型中:

def days_ago
  return nil unless created_at?
  @days_ago ||= ... # (calculation involving created_at)
end

第一次调用days_ago时,它将计算值,并在@days_ago变量中缓存值。您第二次称呼它,它将返回缓存的值。

最新更新