0

アプリケーションを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]

終わり

ありがとう

4

1 に答える 1

1

@userオブジェクトは配列のようです。おそらく:whereを使用してクエリを実行していて、配列からポップするのを忘れています。これを試して:

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