目前我正在将我的应用程序从rails 3.2升级到rails 4。 得到以下错误。
ArgumentError (argument out of range):
由于以下代码行而发生此错误
@lease.update_attributes(params[:lease])
我尝试通过更新也抛出相同的错误。 是否从rails 4中删除了update_attributes。如何使用它?
代码:
def terms_build_methods
if @lease.blank?
@lease = params[:current_lease_id].present? ? Lease.find_by_id(params[:current_lease_id].to_i) : Lease.create(params[:lease])
else
@lease.update(lease_params)
end
Lease.update_lease_occupancy_type(@lease)
Lease.update_lease_status(@lease)
end
private
def lease_params
params.require(:lease).permit!
end
答案 0 :(得分:8)
只需使用@lease.update(lease_params)
,并在控制器中添加私有方法
def lease_params
params.require(:lease).permit!
end
答案 1 :(得分:-2)
在Rails 4中,我们可以期望重命名update_attribute()。新方法名称称为update_column()。有关更多信息,请参阅此提交。
https://github.com/rails/rails/commit/a7f4b0a1231bf3c65db2ad4066da78c3da5ffb01