@user.update_attributes(params[:user])
ユーザーがログアウトされているか、ログアウトしているように見えます。というメッセージが表示されますundefined method 'first_name' for nil:NilClass
。ホームページに戻ると、ログインリンクが表示されます。なぜこうなった?含める必要があるstackoverflowを読みましたattr_accessible :admin
が、まったく役に立たなかったようです。
user.rb 更新メソッド
def update
@user = User.find(params[:id])
if !params[:headshoturl].blank? then
@user.upload_headshot(params[:headshoturl])
end
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
移行ファイル
class DeviseCreateUsers < ActiveRecord::Migration
def change
create_table(:users) do |t|
## Database authenticatable
t.string :email, :null => false, :default => ""
t.string :encrypted_password, :null => false, :default => ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## Trackable
t.integer :sign_in_count, :default => 0
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.string :current_sign_in_ip
t.string :last_sign_in_ip
## Confirmable
# t.string :confirmation_token
# t.datetime :confirmed_at
# t.datetime :confirmation_sent_at
# t.string :unconfirmed_email # Only if using reconfirmable
## Lockable
# t.integer :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts
# t.string :unlock_token # Only if unlock strategy is :email or :both
# t.datetime :locked_at
## Token authenticatable
# t.string :authentication_token
# Custom changes
t.string :first_name
t.string :last_name
t.string :user_code
t.timestamps
end
add_index :users, :email, :unique => true
add_index :users, :reset_password_token, :unique => true
# add_index :users, :confirmation_token, :unique => true
# add_index :users, :unlock_token, :unique => true
# add_index :users, :authentication_token, :unique => true
end
end
ルート.rb
devise_for :users do get '/users/sign_out' => 'devise/sessions#destroy' end
resources :users