gpt4 book ai didi

ruby-on-rails - 如何检测模型的属性变化?

转载 作者:行者123 更新时间:2023-12-03 05:07:44 25 4
gpt4 key购买 nike

我想在 Rails 中创建一个回调函数,该函数在保存模型后执行。

我有这个模型,声明有一个属性“状态”,该属性根据声明的状态而变化,可能的值是待定、认可、批准、拒绝

数据库具有默认值为“待处理”的“状态”。

我想在第一次创建模型或从一个状态更新到另一个状态后执行某些任务,具体取决于模型从哪个状态更改。

我的想法是在模型中添加一个函数:

    after_save :check_state

def check_state
# if status changed from nil to pending (created)
do this

# if status changed from pending to approved
performthistask
end

我的问题是如何检查模型中更改之前的先前值?

最佳答案

您应该查看ActiveModel::Dirty模块。您应该能够对您的 Claim 模型执行以下操作:

claim.status_changed?  # returns true if 'status' attribute has changed
claim.status_was # returns the previous value of 'status' attribute
claim.status_change # => ['old value', 'new value'] returns the old and
# new value for 'status' attribute

claim.name = 'Bob'
claim.changed # => ["name"]
claim.changes # => {"name" => ["Bill", "Bob"]}

关于ruby-on-rails - 如何检测模型的属性变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1586536/

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