我希望我可以在最近升級的Rails 3.2應用程序中獲得一些幫助,Rails 3.2 Mass Assignment
據我所知,在Rails 3.2屬性被默認鎖定下來,爲了讓它們被分配,我需要使用attr_accessible「解鎖」它們。這對正常的模型屬性工作正常。
但是,我有一個自行開發的自定義屬性mixin,允許我爲任何模型添加任意命名的屬性。這些屬性存儲在custom_properties表中。如果我要求模型的屬性如:foo.property_foobar,則此mixin利用缺少的方法查找該表中的屬性。
使用此mixin的每個模型都可以具有任意名稱的X自定義屬性。我無法指定這些屬性的名稱,這些屬性顯然很難添加到attr_accessible中。
有沒有人有關於如何允許這些動態屬性的大規模分配的建議?我寧願不將所有模型屬性列入白名單。
希望所有這些都有道理。感謝大家!
路易
Teoulas,非常感謝您的快速響應! 關於attr_protected,我假設你的意思是關閉白名單。我考慮過這樣做,只是讓我覺得我做錯了,如果我無法獲得白名單工作。我試圖儘可能避免,但考慮到替代品可能無法做到。 我喜歡你關於重新實現我的自定義屬性到ActiveRecord:Store的建議。問題在於我的一些使用我的自定義屬性mixin的模型是分層的:如果子項沒有值,則子項會繼承父項的自定義屬性值(續...) –
...此需求使其變得複雜轉移到ActiveRecord:Store,儘管最終這可能是正確的舉措。 所有這一切,我會絕對看到強大的參數。這聽起來像是一個潛在的解決方案,如果我能夠允許任意命名的屬性。即使這仍然是一個重大的努力。 再次感謝您的時間。非常感謝。我愛RoR的另一個原因! –