Rails 4.2:获取"未经许可的参数"在添加`protected_attributes` gem之后创建用户

时间:2015-01-19 19:46:55

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 attributes

我正在从Rails 3.2升级到4.2,并希望关注Ryan Bates'在进行任何重大重构之前,尽快让事情工作的建议。

为此,我安装了protected_attributes gem,因为我的印象是安装了这个gem我不需要立即在我的控制器中实现强params方法并且可以继续使用{{ 1}}在模型中,直到我有时间重构。

我没有收到有关attr_accessible本身的任何错误,但是当我尝试在开发中创建用户时,我得到attr_accessible尽管在用户模型中将所有这些作为参数&#39 ; s Unpermitted parameters: first_name, last_name, phone方法。

有人可以指出我在这里做错了吗?

2 个答案:

答案 0 :(得分:2)

这不是正确的做法。你不想将遗留的,已弃用的功能从3.2移植到4.2,而你真正想做的事情恰恰相反:在Rails 3.2中安装strong_parameters gem,并确保在升级之前替换attr_accessible。< / p>

Rails 4.x实际上不再设计为使用受保护的属性,因此尝试重新引入它时会遇到很多问题。

答案 1 :(得分:1)

要使用强力参数,您必须更新控制器的代码(我建议这样做,因为它不会花费太多工作)。

一般来说,使用strong_parameters的实现如下:

  def create
    @model = Model.create(model_params)
    if @model.persisted?
      # logic
    else
      #logic
    end
  end

private

def model_params
  params.require(:model).permit(:model_attrbite1, :model_attribute2)
end