Ruby on rails 强_参数不起作用
使用Ruby 1.9.3、Rails 3.2.13、strong\u参数0.2.1: 我已经遵循了教程和railscasts中的每一个指示,但我无法让强_参数工作。这应该很简单,但我看不出哪里有错误 config/initializers/strong_parameters.rb:Ruby on rails 强_参数不起作用,ruby-on-rails,ruby-on-rails-3,strong-parameters,Ruby On Rails,Ruby On Rails 3,Strong Parameters,使用Ruby 1.9.3、Rails 3.2.13、strong\u参数0.2.1: 我已经遵循了教程和railscasts中的每一个指示,但我无法让强_参数工作。这应该很简单,但我看不出哪里有错误 config/initializers/strong_parameters.rb: ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection) config/application.rb config.
ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection)
config/application.rb
config.active_record.whitelist_attributes = false
app/models/product.rb
class Product < ActiveRecord::Base
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存储库中解释得非常清楚。有类似的教程依赖于默认值:raise
,这令人困惑。谢谢你回答这个问题。
...
def create
@product = Product.new(product_params)
# and same flow than before
end
private
def product_params
params.require(:product).permit(:name)
end
# Raises an error on unpermitted attributes assignment
config.action_controller.action_on_unpermitted_parameters = :raise # default is :log