0

我正在将应用程序从 Rails 2.2.2 移动到 Rails 3。我有一个用于更新用户信息的表单,该表单在 Rails 2 中功能齐全,但在 Rails 3 中中断

提交表单时,会调用一个创建用户对象的方法,然后尝试像这样进行更新:

if @user.update_attributes params[:user] ## line 126

然后控制器抛出这个异常:

undefined method `update_attributes' for #<ActiveRecord::Relation:0xacfc178>

in: app/controllers/admin_controller.rb:126:in `save_user'

所以看起来 Rails 3 中的 ActiveRecord 正在返回不同类型的对象?一个不继承 update_attributes 的?我该如何解决?

这是有问题的完整控制器方法:

def save_user
@needs_password_gen = "YES"
@user = B2bUser.where("id = ?",params[:id])

@needsAPICredentials = false

##### Make sure thay gave us an email address
if !params[:user][:email] || !validEmailAddress(params[:user][:email].to_s)
  flash[:warning] = "Valid email address is required."
  redirect_to :controller => "admin/edit_user/#{@user.id}" and return
end

@user.first.update_attributes params[:user]

结尾

谢谢

4

1 回答 1

1

看起来您的 @user 对象可能是一个数组。您可能正在使用 :where 进行查询并且忘记将其从数组中弹出。尝试这个:

@user.first.update_attributes params[:user]
于 2013-03-26T16:23:22.593 回答