Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在使用Mongoid的rails项目中,有没有办法设置默认可访问的属性?_Ruby On Rails_Mongoid_Attr Accessible - Fatal编程技术网

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