0

これを行う目的について少し混乱しています:

module SessionsHelper
   def current_user=(user)
       @current_user = user
   end
end

ソース: http://ruby.railstutorial.org/chapters/sign-in-sign-out#code:current_user_equals

コントローラーを介して、コントローラーとビューの間のスコープを持つ @user を設定するため、なぜそれを明示的に定義する必要があるのでしょうか?

また、説明は次のことを可能にします:

redirect_to current_user

関数 current_user は、私が redirect_to (function) im が @variable_path について話していると言うとき、どのように知っていますか? (この場合は user_path)

4

2 に答える 2

0

current_userRailsは、User背後にオブジェクトがあることを認識できるほど賢いです。

そうは言っても、Railsは適切な場所にリダイレクトできます。

于 2012-06-03T05:53:04.083 に答える
0

90% 以上の Rails 開発者がそれを知っています (そして、それは現在、Rails Convention Over Configuration の一部であると言えます)

  • current_user は User オブジェクトを表します
  • current_user は、任意のユーザーではなく、ログインしたユーザーを表します

Rails コードを見て @user を見つけたら、@user が定義されている数行を読んで、なぜそれが定義されているのか、その目的を理解する必要があります。ログインしているユーザーを表すため、 current_user には当てはまりません。

2番目の質問について、

  redirect_to some_object # or any function that returns some object

オブジェクトをredirect_toに渡すと、URLのリダイレクトが発生します

  "/#{object.class.name.tableize}/#{object.id}"

これは、オブジェクトをエンドユーザーに詳細に説明する「表示」ページであると想定されます

object_path または object_url は同じ URL を作成します

于 2012-06-03T06:05:48.107 に答える