使用 Ruby 1.9.3、Rails 3.2.13、Strong_parameters 0.2.1:
我遵循了教程和 railscasts 中的所有指示,但我无法让 strong_parameters 正常工作。这应该是非常简单的事情,但我看不出错误在哪里。
配置/初始化程序/strong_parameters.rb:
ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection)
配置/应用程序.rb
config.active_record.whitelist_attributes = false
应用程序/模型/product.rb
class Product < ActiveRecord::Base
end
应用程序/控制器/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
正如预期的那样,这会引发 Forbidden Attributes 异常。但是当我搬到:
...
def create
@product = Product.new(product_params)
# and same flow than before
end
private
def product_params
params.require(:product).permit(:name)
end
然后,如果我进入表格并输入“名称:产品 1”和“颜色:红色”,则不会引发异常;新产品以正确的名称保存在数据库中,没有颜色但名称正确。
我究竟做错了什么?