我正在将一个应用程序从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]
端
感谢
答案 0 :(得分:1)
看起来你的@user对象可能是一个数组。您可能正在使用:在哪里查询并忘记将其从阵列中弹出。试试这个:
@user.first.update_attributes params[:user]