我有一个错误,在关联模型中,父模型的外键在关联模型表中显示为NULL。
为了追踪发生这种情况的原因,我想在每次分配属性时写入日志文件(即每次调用attr=
方法)。
我该怎么做? Rails是否已经允许通过某种我不知道的方式来完成这项工作?
答案 0 :(得分:1)
你可以通过简单地覆盖attr =方法来实现。例如:
class User
def username= username
Rails.logger.info "Setting username with #{username}"
write_attribute :username, username
end
end
您还可以通过链接方法来实现此目的。例如:
class User
alias :username_old= :username=
def username= username
Rails.logger.info "Setting username with #{username}"
self.username_old = username
end
end
答案 1 :(得分:1)
我认为您可以使用回调方法(before_save)来检查对象的状态。 以下可能会帮助你...
article = Article.find(:first) article.changed? #=> false # Track changes to individual attributes with # attr_name_changed? accessor article.title #=> "Title" article.title = "New Title" article.title_changed? #=> true # Access previous value with attr_name_was accessor article.title_was #=> "Title" # See both previous and current value with attr_name_change accessor article.title_change #=> ["Title", "New Title"]