gpt4 book ai didi

ruby-on-rails-3 - Rails 3 after_save 旧值

转载 作者:行者123 更新时间:2023-12-02 15:38:43 24 4
gpt4 key购买 nike

如何处理正在更新的记录的旧值?

例如在下面的代码块中,在我确定它确实已经改变后,我将如何使用以前的 winner_id 字段运行查询?

if self.winner_id_changed?
old_value = self.changed_attributes
User.find(old_value)
#do stuff with the old winner....
end

self.changed_attributes 的示例输出为:

{"winner_id"=>6}

我真的必须将其转换为字符串并解析出值才能对其执行查询吗? old_value[:winner_id] 似乎什么都没做。

最佳答案

使用 where 而不是 find,并使用以下 inject 方法对更改生成所需的哈希:

if self.winner_id_changed?
old_value = self.changes.inject({}) { |h, (k,v)| h[k] = v.first }
old_user = User.where(old_value)
#do stuff with the old user....
end

您还可以使用 ActiveRecord 脏方法,例如:

self.winner_id_was

获取特定属性的旧值。可以找到完整的文档 here .

关于ruby-on-rails-3 - Rails 3 after_save 旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12463387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com