繁体   English   中英

Strong_parameters不起作用

[英]Strong_parameters not working

使用Ruby 1.9.3,Rails 3.2.13,Strong_parameters 0.2.1:

我已经按照教程和railscasts中的所有指示进行操作,但是我无法使strong_parameters正常工作。 它应该确实很简单,但是我看不出错误在哪里。

config / initializers / strong_parameters.rb:

ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection)

config / application.rb

config.active_record.whitelist_attributes = false

app / models / product.rb

class Product < ActiveRecord::Base
end

app / controllers / products_controller.rb:

class ExpedientesController < ApplicationController
  ...
  def create
    @product = Product.new(params[:product])
    if @product.save
      redirect_to @product
    else
      render :new
    end
  end
end

如预期的那样,这将引发“禁止属性”异常。 但是当我转到:

 ...
  def create
    @product = Product.new(product_params)
    # and same flow than before
  end
  private
  def product_params
    params.require(:product).permit(:name)
  end

然后,如果我进入表单并输入“名称:产品1”和“颜色:红色”,则不会引发任何异常; 新产品将以不带颜色但名称正确的方式保存在数据库中。

我究竟做错了什么?

解决了。

默认情况下,不允许属性的使用会静默失败,并且如此提交的属性将被过滤掉并被忽略。 在开发和测试环境中,也会记录该错误。

要更改默认行为,例如在开发环境中:config / environments / development.rb:

# Raises an error on unpermitted attributes assignment
  config.action_controller.action_on_unpermitted_parameters = :raise  # default is :log

老实说,在github仓库中已经很清楚地解释了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM