Rails应用程序中,我有编辑的资源很多领域一种特殊形式。既然我也想记录这个特定资源的变化,我需要知道哪些参数已更改。回报率:如何判断的形式PARAMS已经改变
目前这种形式,我在与隐藏字段以标签的形式复制的各个领域,所以在控制,每场相比,相应的隐藏字段,以确定是否值被改变。但在视图和控制器中这是很多工作。
相对较新到Rails,我发现各种Rails的“神奇”,因为我走的,所以我想知道:是否该框架提供了一种方式来为我做到这一点?或者这是非常唯一的方法?
Rails应用程序中,我有编辑的资源很多领域一种特殊形式。既然我也想记录这个特定资源的变化,我需要知道哪些参数已更改。回报率:如何判断的形式PARAMS已经改变
目前这种形式,我在与隐藏字段以标签的形式复制的各个领域,所以在控制,每场相比,相应的隐藏字段,以确定是否值被改变。但在视图和控制器中这是很多工作。
相对较新到Rails,我发现各种Rails的“神奇”,因为我走的,所以我想知道:是否该框架提供了一种方式来为我做到这一点?或者这是非常唯一的方法?
具有加载ActiveModel你在寻找什么,看看在文档的例子...
http://api.rubyonrails.org/classes/ActiveModel/Dirty.html
person = Person.find_by_name('Uncle Bob')
person.changed? # => false
person.name = 'Bob'
person.changed? # => true
person.name_changed? # => true
person.name_was # => 'Uncle Bob'
person.name_change # => ['Uncle Bob', 'Bob']
person.name = 'Bill'
person.name_change # => ['Uncle Bob', 'Bill']
你可以试试这个任务肮脏的属性。
@post.attributes = params[:post]
@post.changed # or changes if you want to see what values on which was changed
更多,您可以通过此链接找到:http://ar.rubyonrails.org/classes/ActiveRecord/Dirty.html
另外,如果你想使用版本控制或审计,试试这个宝石(最好的是:paper_trail,acts_as_audited,vestal_versions):
不要在这种情况下,还不忘加'attr_accessible'要保护! –
是的,你是对的。在导轨3中,它被提取到ActiveModel。我顶部的链接有点过时了。 –
谢谢,劳埃德!这看起来很完美!在我完成了所有的RTFM之后,我无法相信我以前从未遇到过。 –