サインアップした直後にユーザーをログインさせるにはどうすればよいでしょうか。私は電子メールの確認を必要としないので、これが自動的に行われることをユーザーが予期しない理由はありません。
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to welcome_url, notice: "Your user: #{@user.name} was successfully created! Please log in!" }
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
私が見ている 1 つの問題は、POST session#create に直接接続するルートがないことです。するべきらしいが具体的なルートはない
controller :sessions do
get 'login' => :new
post 'login' => :create
delete 'logout' => :destroy
get 'logout' => :destroy
end
収量:
login GET /login(.:format) sessions#new
POST /login(.:format) sessions#create
logout DELETE /logout(.:format) sessions#destroy
GET /logout(.:format) sessions#destroy
参考までに、ここに私のセッション#作成メソッドがあります
def create
user = User.find_by_name(params[:name])
if user and user.authenticate(params[:password])
session[:user_id] = user.id
if session[:return_to]
redirect_to session[:return_to]
session[:return_to] = nil
return
end
redirect_to eval("#{user.role}_url")
else
redirect_to login_url, alert: "Invalid user/password combination"
end
end
初めての場合を除いて、ユーザーがサインインしているかのように、user@create コントローラー メソッドから session#create ルートに直接フックできますか??