railsチュートリアルの10章のことです。unless以下のcurrent_userがしっくりきません。
まず第一に、current_userメソッドが呼び出されていると言う認識で良いのでしょうか? もしそうであれば、current_userメソッドを呼び出し、最後に評価された値が返り値になるというrubyの性質を利用しているだけなのでしょうか。一度変数に入れてから比較した方が読みやすい気がするのですが、どんな理由があるのかイマイチわかりません。
また、@current_userとなっておらず、current_userとなっていることもよくわかりません。sessionヘルパーを呼び出したのであれば、@current_userとなる気がしてしまいます。もし、railsでは@を外すような操作が許されているとして、このような省略は一般的なのでしょうか?
ruby
1redirect_to(root_url) unless @user == current_user
#ソースコード
ruby
1/users_controller.rb 2 3 4def correct_user 5 @user = User.find(params[:id]) 6 redirect_to(root_url) unless @user == current_user 7end
/session_helper.rb def current_user if (user_id = session[:user_id]) @current_user ||= User.find_by(id: user_id) elsif (user_id = cookies.signed[:user_id]) user = User.find_by(id: user_id) if user && user.authenticated?(:remember, cookies[:remember_token]) log_in user @current_user = user end end
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/01 17:33
2019/07/01 17:42