Schienen update_attributes gibt false zurück, wenn Sie versuchen zu aktualisieren db-Werte

in der Hoffnung, jemand hier kann mich in die richtige Richtung.

Ich habe ein controller-Update def laufen "update_attributes". Derzeit gibt false zurück, ohne Fehlermeldung. Ich bin ziemlich neu in Ruby, aber nicht zu codieren, und dies hat mich ratlos für ein paar Tage! Ich versuche dem model User und db aktualisiert mit den Werten unten angegeben.

def update   
    #get currently logged in user
    @user = current_user
    #update user params based on edit form...
    if @user.update_attributes(params[:user])
        redirect_to profile_path, :notice  => "Successfully updated profile."
    else
        render :action => 'edit'
    end
end

meinem edit def....

def edit
    @user = current_user
end

Das Formular sendet die folgenden, um dieses update-Methode:

--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
utf8: 
_method: put
authenticity_token: 9T4ihVI0p8j7pZEFxof3Bfahi2a+o3BPmtXJDnfHT4o=
user: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
  first_name: Amanda
  last_name: Ross
  is_owner: '1'
  email: example@googlemail.com
commit: Update
action: update
controller: users
id: '20'

And params[:user] zurück:

{"first_name"=>"Amanda", "last_name"=>"Ross", "is_owner"=>"1", "email"=>"[email protected]"}

Alle diese Felder sind in attr_accessible in das Modell, und kann ich einen Benutzer erstellen, ohne jedes problem.

hier die Entwicklung.log-Ausgabe (sorry, es ist etwas chaotisch)....

Started PUT "/users/20" for 127.0.0.1 at 2012-04-17 10:39:29 +0100
Processing by UsersController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"9T4ihVI0p8j7pZEFxof3Bfahi2a+o3BPmtXJDnfHT4o=", "user"=>    {"first_name"=>"Amanda", "last_name"=>"Ross", "is_owner"=>"1", "email"=>"[email protected]"},     "commit"=>"Update", "id"=>"20"}
  [1m[36mUser Load (1.0ms)[0m  [1mSELECT "users".* FROM "users" WHERE "users"."id" = 20 LIMIT 1[0m
>>>>>>>>>>>>
{"first_name"=>"Amanda", "last_name"=>"Ross", "is_owner"=>"1", "email"=>"[email protected]"}
     [1m[35m (0.0ms)[0m  begin transaction
     [1m[36mUser Exists (0.0ms)[0m  [1mSELECT 1 FROM "users" WHERE (LOWER("users"."email") =     LOWER('[email protected]') AND "users"."id" != 20) LIMIT 1[0m
  [1m[35mUser Exists (0.0ms)[0m  SELECT 1 FROM "users" WHERE ("users"."email" = '[email protected]'     AND "users"."id" != 20) LIMIT 1
  [1m[36m (0.0ms)[0m  [1mrollback transaction[0m
 Rendered users/_form.html.erb (7.0ms)
 Rendered users/edit.html.erb within layouts/application (10.0ms)
 Rendered layouts/_includes.html.erb (30.0ms)

Könnte evtl jemand helfen Punkt, wo ich bin, was falsch läuft, bitte?

Vielen Dank im Voraus!

InformationsquelleAutor der Frage steve | 2012-04-17

Schreibe einen Kommentar