我正在从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
方法。
有人可以指出我在这里做错了吗?
答案 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