推荐的解决方案是这样的:有没有办法在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