アプリケーションをRails2.2.2からRails3に移動しています。Rails2では完全に機能していましたがRails3では機能しなかったユーザーの情報を更新するために使用されるフォームがあります。
フォームが送信されると、ユーザーオブジェクトを作成し、次のように更新を試みるメソッドが呼び出されます。
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]
終わり
ありがとう