我有一个显然随机设置为id为1的对象,并且在代码库中未知这种情况的来源。可以是与学校相关联的用户的更新属性。
如果发生错误或以其他方式记录这种情况,我可以追踪并解决它?
以下是首次尝试,但似乎没有考虑update_attributes
belongs_to :foo_school, :foreign_key => 'school_id'
def foo_school=(foo_school)
begin
raise "Found" if foo_school == FooSchool.find(1)
rescue Exception => e
# Track it down through the stack trace
Rails.logger.error e
ensure
write_attribute(:foo_school, foo_school)
end
end
答案 0 :(得分:2)
观察者可以为您做到这一点。你对这位观察者的所作所为取决于你。
$ rails g observer Oddity
在config/application.rb
中添加此内容(在该文件中搜索“观察者”,默认情况下有一个示例)。
config.active_record.observers = :oddity_observer
class OddityObserver < ActiveRecord::Observer
observe :foo
def after_update(record)
raise "Boom" if record.id == 1
end
end