Ruby on rails 在使用Mongoid的rails项目中,有没有办法设置默认可访问的属性?
建议的解决方案如下:Ruby on rails 在使用Mongoid的rails项目中,有没有办法设置默认可访问的属性?,ruby-on-rails,mongoid,attr-accessible,Ruby On Rails,Mongoid,Attr Accessible,建议的解决方案如下: config.active_record.whitelist_attributes = true 但这仅在使用活动记录时有效。在mongoid rails项目中有类似的方法吗?它使用活动模型,但不使用活动记录。我从未使用过Mongoid,因此这是一种推测,但从外观上看,AR使用Railtie初始值设定项在配置为true时设置attr_accessible(nil) 目前在配置中似乎没有这样做的方法,但您可能会以某种方式使用自己的初始值设定项来钩住它。在Mongoid::F
config.active_record.whitelist_attributes = true
但这仅在使用活动记录时有效。在mongoid rails项目中有类似的方法吗?它使用活动模型,但不使用活动记录。我从未使用过Mongoid,因此这是一种推测,但从外观上看,AR使用Railtie初始值设定项在配置为true时设置attr_accessible(nil) 目前在配置中似乎没有这样做的方法,但您可能会以某种方式使用自己的初始值设定项来钩住它。在Mongoid::Fields中,如果protect\u-sensitive\u字段的配置为true(默认值),则调用attr\u-protected for-id、\u-id和\u-type。这也将活动授权人设置为黑名单。您可能会对此进行修补,并为白名单提供更好的配置,以调用attr_accessible(nil)
所以,是的,只是做一个补丁然后提交一个拉请求不是一个坏主意。ruby社区最不需要的是另一场引人注目的大规模分配惨败。这将暂时解决问题:
我问了同样的问题 它目前不受支持,但您可以(直接)进行猴子补丁(如Benedikt) (建议) 它与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