2

我們正在使用Rails 3.我們希望通過strong_parameters gem切換到強參數。您可以在Rails 3中使用強參數和白名單屬性嗎?

創業板的文檔中說,使用這種寶石,需要從trueconfig/application.rb文件

config.active_record.whitelist_attributes = false 

我們在我們的應用中有許多模型和控制器更改爲false以下值。進行這種改變意味着我們必須將我們的所有模型和控制器遷移到強參數中?

理想情況下,我們想逐漸遷移。也就是說,開始爲新模型和控制器使用強參數,然後逐步更新所有模型和控制器。

那麼你可以使用一些模型/控制器的強參數和其他人的白名單屬性?

謝謝。

回答

1

是的,你可以一起使用。您可以簡單地將ActiveModel::ForbiddenAttributesProtection模塊混入您想要遷移到強參數的模型中,同時通過其他模型中的attr_accessible保留您的白名單。只是在完成徹底切換之前不要禁用白名單默認設置。換句話說,不要設置這個

config.active_record.whitelist_attributes = false 

直到您完全遷移完。

3

我剛開始這樣做。我的經驗是,我可以離開啓用了自動白名單:

config.active_record.whitelist_attributes = true 

然後,我需要使用attr_protected明確禁止在模型我遷移到強PARAMS白名單:

class Widget < ActiveRecord::Base 
    attr_protected # disable whitelist in this model 
    include ActiveModel::ForbiddenAttributesProtection 
    ... 
end 
相關問題