Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 Rails:如何仅在某些型号上使用强参数_Ruby On Rails_Ruby On Rails 4_Strong Parameters - Fatal编程技术网

Ruby on rails Rails:如何仅在某些型号上使用强参数

Ruby on rails Rails:如何仅在某些型号上使用强参数,ruby-on-rails,ruby-on-rails-4,strong-parameters,Ruby On Rails,Ruby On Rails 4,Strong Parameters,我还没有切换到Rails 4&我一直在研究strong_params。我喜欢我所看到的&只想在1个型号上使用它。看起来很简单,但我想在我的config>application.rb文件中注释掉'config.active\u record.whitelist\u attributes=true' 如何安全地(从安全角度)仅在某些型号中使用强参数?我建议采用这种方法:默认情况下启用强参数,并专门为不需要它的控制器禁用它。(是的,strong param现在在Rails 4的控制器中,不再在型号中)

我还没有切换到Rails 4&我一直在研究strong_params。我喜欢我所看到的&只想在1个型号上使用它。看起来很简单,但我想在我的config>application.rb文件中注释掉'config.active\u record.whitelist\u attributes=true'


如何安全地(从安全角度)仅在某些型号中使用强参数?

我建议采用这种方法:默认情况下启用强参数,并专门为不需要它的控制器禁用它。(是的,strong param现在在Rails 4的控制器中,不再在型号中)

要禁用特定控制器,您可以使用
params.require(:model_name)。permit

这将允许该特定控制器的任何参数

范例

class UnsafeController

  ...

  def update
    ...
    @unsafe.update unsafe_params
    ...
  end

  private

    def unsafe_params
        params.require(:unsafe).permit!
    end

end

当然,为什么不可能?你能解释一下怎么可能吗?我想我必须做一些其他的事情,因为我在评论白名单属性。。我还不熟悉ROR@phoetan,那么config.active\u record.whitelist\u attributes=true@BenjaminAs呢?我提到过“默认情况下保持启用强参数”。这意味着您将从
config/application.rb
文件和任何
mass\u assignment\u sanitarizer
选项中删除
whitelist\u attributes
选项OK,如果我误解或遗漏了一些可能很明显的内容,请原谅,但为了澄清这一点,“config.active\u record.whitelist\u attributes=true”只有在我的模型中没有可访问的属性时,才会起作用。这就是你想表达的观点,对吗@Benjaminwhitelist_属性由rails默认设置为“false”,这就是您想要的。因此,您需要将其从application.rb文件中删除,这将自动启用强参数whitelist_attributes is application wide=您不能在一个位置将其设置为true,在另一个位置将其设置为false(除非您一次只需要一个用户)。我给您的技术允许在任何地方使用强参数,并在您选择的控制器中禁用它(理解:允许任何参数)。如果您需要灵活的解决方案,这是唯一的方法。还要注意:stong参数与控制器相关(如果您对其进行细化,则与操作相关),而与模型无关。。