Rails 3和update_attributes

时间:2013-03-26 12:29:45

标签: ruby-on-rails-3 activerecord

我正在将一个应用程序从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]

感谢

1 个答案:

答案 0 :(得分:1)

看起来你的@user对象可能是一个数组。您可能正在使用:在哪里查询并忘记将其从阵列中弹出。试试这个:

@user.first.update_attributes params[:user]