gpt4 book ai didi

ruby-on-rails - 如何确定关联是否在ActiveRecord中更改?

转载 作者:行者123 更新时间:2023-12-04 08:50:45 26 4
gpt4 key购买 nike

ActiveRecord提供更改跟踪,其中调用#name_changed?返回true/false取决于加载模型的时间到现在之间name属性是否已更改。

协会有等效的吗?我专门在寻找has_many关联,但是所有关联类型都会很有用。

Rails 5.2,Ruby 2.5.1

最佳答案

好的,不是答案,但这是我想出的解决方法。

在我的项目中,我已经在使用gem audited 跟踪我也希望接收更改的模型上的更改。在我的情况下,该模型是Location,而我要检查位置是否已更改的模型是Employee
然后,在after_save中,检查是否对该位置进行了审核,以及是否在几秒钟内创建了该审核。如果是这样,我可以检查更改。

简化示例:

# app/models/location.rb
class Location < ApplicationRecord
audited
end

# app/models/employee.rb
class Employee < ApplicationRecord
after_save :inform_about_changes!
belongs_to :location

def inform_about_changes!
last_location_change = location.audits.last
if last_location_change.created_at.between?(2.seconds.ago, Time.now)
if last_location_change.audited_changes.include? 'city'
city_was = last_location_change.audited_changes[0]
end
end
end
end

再一次,这不是一个答案,但是就我而言,它确实起到了作用

关于ruby-on-rails - 如何确定关联是否在ActiveRecord中更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49604624/

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