2012-01-21 25 views
5

我有類似:如何指定字段爲accepts_nested_attributes_for設置在ActiveRecord的

class Profile < ActiveRecord::Base 
    belongs_to :user  
    delegate :full_name, :to => :user 

    accepts_nested_attributes_for :user 
    ....... 

這項工作很好,因爲我想配置文件能夠設置FIRST_NAME和姓氏的用戶。但是,如果用戶在表單中注入其他參數,則會造成安全威脅。

如何使accept_nested_attributes_for只取first_name和last_name並放棄其他參數?

回答

0

有兩種選擇,我可以想到,他們實際上是一樣的方式,你將不經過anaf處理大規模任務。

  1. accept_nested_attributes_for將尊重用戶模型上的attrs_accessible。如果您指定某個屬性未在用戶模型中暴露給質量分配,則無法通過accept_nested_attributes_分配該屬性。

  2. 您可以處理配置文件控制器中的衛生設備。將傳遞給用戶模型的屬性將在params [:profile] [:user_attributes]下出現。然後,您可以使用slice僅獲取您想要允許的屬性,或者使用except刪除您不想允許的屬性。雖然我寧願將允許的屬性與黑名單列入白名單。

選項1會影響到任何你正在使用的用戶模型質量分配,同時選擇2隻影響通過配置文件控制進來的參數

相關問題