我正在将应用程序从 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]
结尾
谢谢