推薦的解決方案是這樣的:有沒有辦法在Mongoid的rails項目中默認設置attr_accessible?
config.active_record.whitelist_attributes = true
但是這隻能如果您使用的活動記錄。在mongoid rails項目上有類似的方法嗎?它使用活動模型,但不使用活動記錄。
推薦的解決方案是這樣的:有沒有辦法在Mongoid的rails項目中默認設置attr_accessible?
config.active_record.whitelist_attributes = true
但是這隻能如果您使用的活動記錄。在mongoid rails項目上有類似的方法嗎?它使用活動模型,但不使用活動記錄。
我也問過同樣的問題
https://groups.google.com/forum/?fromgroups#!topic/mongoid/xuBbuyhiFEU
它目前不支持,但你可以做一個(簡單的)猴子貼片(如建議使用Benedikt )
https://gist.github.com/1977438
這是非常相似的AR(你可以在AR代碼檢查,我在這裏複製它爲簡單起見)
ActiveSupport.on_load(:active_record) do
if app.config.active_record.delete(:whitelist_attributes)
attr_accessible(nil)
end
app.config.active_record.each do |k,v|
send "#{k}=", v
end
end
我從來沒有使用Mongoid,所以這是非常推測性的,但從它的外觀來看,AR使用Railtie初始值設定器來設置attr_accessible(nil),當該配置爲true時。
它看起來不像目前在配置中這樣做的方法,但你可能可以用它自己的初始化程序以某種方式掛鉤它。在Mongoid :: Fields中,如果protect_sensitive_fields的配置爲true(缺省值),它會爲id,_id和_type調用attr_protected。這也將active_authorizer設置爲黑名單。你可以修補它,並給白名單更好的配置,而不是調用attr_accessible(nil)。
所以是的,只是做一個補丁然後提交一個拉請求不是一個壞主意。紅寶石社區需要的最後一件事是另一個高調的質量分配失敗。
看一看這也:http://mongoid.org/docs/documents /access.html – 2012-03-26 13:07:05