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之後,我無法相信我以前從未遇到過。 –