关于这篇文章:tracking activerecord objects
我需要知道使用accepts_nested_attributes_for在大表单中更改了哪些字段。
目前,该表单的效果与预期一致。但另外我正在做一个关于用户变化的“日志历史记录”。
我已经尝试过哈希映射,但由于模型不小,所以对我来说真的很复杂,谈论上面的文章可能存在更好的跟踪变化的方法。
我的模型是(如有必要):
class Customer < ActiveRecord::Base
has_many :addresses
attr_accessible :nom, :prenom, :langue, :nationalite, :codeFiscal, :hidden_status, :subscribed
attr_accessible :addresses_attributes, allow_destroy: true
accepts_nested_attributes_for :addresses
end
class Address < ActiveRecord::Base
belongs_to :customer
has_many :telephones
attr_accessible :flag, :societe, :titre, :persContact, :rue, :rue1, :nopostal, :lieu, :pays
attr_accessible :hidden_status
attr_accessible :telephones_attributes
accepts_nested_attributes_for :telephones, :reject_if => :all_blank, :allow_destroy => true
end
class Telephone < ActiveRecord::Base
belongs_to :address
attr_accessible :typeNumero, :numeroTel
end
(模特非常正常)。
有什么想法吗?如果我被迫映射哈希,请问一些关于如何做的示例?
提前致谢
答案 0 :(得分:0)
经过几个选项(感谢Beerlington)和上面的文章相同,我想要的是:
阅读本文:ActiveRecord::Dirty
def update
@customer = Customer.find(params[:id])
@customer.assign_attributes(params[:customer])
if @customer.valid?
# If changued I revise the record in the model
@customer = @customer.requires_log if @customer.changed?
# and very useful: @customer.changes gives you an array con every changue
@customer.save
end
# similar for addresses and phones but into a loop:
# @customer.addresses.each do |address| ... end
# I didn't put it because it is repetitive
end
程序中的重要事项是: