if文の書方について質問させてください
現在ログインの際に管理者権限ある人と一般の人のリダイレクト先を変えたいのですがif文がうまく機能しません。
管理者権限のある人と一般の人との違いは、usersテーブルにあるadminカラムがtrueかfalseで区別しています。
そこでログインのsession_controller.rbでこう書いています
def create user = User.find_by_name(params[:name]) if user and user.authenticate(params[:password]) && user.admin == "false" session[:user_id] = user.id redirect_to store_url elsif user and user.authenticate(params[:password]) && user.admin == "true" session[:user_id] = user.id redirect_to admin_url else redirect_to login_url, alert: "無効なユーザー/ パスワードの組み合わせです" end end
これだと全てelseの結果になってしまいました。
試しにifではなくcase使ってみました
def create user = User.find_by_name(params[:name]) case user and user.authenticate(params[:password]) when user.admin(params[:admin]) == "false" session[:user_id] = user.id redirect_to store_url when user.admin(params[:admin]) == "true" session[:user_id] = user.id redirect_to admin_url else redirect_to login_url end end
こうすると違うエラーが出てしまいました
ArgumentError (wrong number of arguments (given 1, expected 0)): app/controllers/sessions_controller.rb:25:in `create'
以上なのですが、どのように書いたらよいでしょうか?よろしくお願いしますm(._.)m
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/11 09:00