我正在使用Ruby on Rails 3.0.9,我想知道在哪些情況下(即哪些方法)attr_accessible
方法有效。例如,如果我用'attr_accessible'效果
attr_accessible :name, :surname
它會照顧到不分配的,當您使用的User.new(params[:user])
語句new(...)
方法屬性值。
但是它會照顧什麼其他方法?我可以正確運行,例如,方法爲where(...)
和exists?(...)
,但attr_accessible
不會生效嗎?
對於'@ users.update_all(...)'方法,我如何分配一個不'attr_accessible'屬性值? – Backo
@backo ...對於User.update_all,SQL直接發送到數據庫而沒有實例化模型對象,所以'attr_accessible'或'attr_protected'在這裏沒有任何作用,它將被保存..參見[update_all] (http://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-update_all)...這個方法構造了一個單獨的SQL UPDATE語句並直接發送到數據庫。它不會實例化相關模型,也不會觸發Active Record回調或驗證 – rubyprince