質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

338閲覧

configのsessionに関するデータの解釈

sansyou69

総合スコア31

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/06/28 07:26

編集2020/06/28 07:36

ログイン機能についてざっと学んだのですが、一つ一つの意味合いについては、まだ理解できていません。
configのapplication.rbに、

config.to_prepare do Devise::SessionsController.layout "devise" Devise::RegistrationsController.layout "devise" end

というコードがあります。これは、どのように理解したらいいのでしょうか?
「Devise:」はハッシュだと思うのですが、そこを含めて、どう解釈したらいいか分かりません。
構文として、また、どういう作用をもたらすのか、その両方が分かりません。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「Devise:」はハッシュだと思うのですが、そこを含めて、どう解釈したらいいか分かりません。

いえ、::は定数のスコープ演算子です。

変数と定数より

あるクラスまたはモジュールで定義された定数を外部から参照するためには'::'演算子を用います。

つまりDeviseクラスorモジュール内に定義されている定数SessionsControllerを参照するためにDevise::SessionsControllerと表記しています。

ruby

1module Devise 2 class SessionsController 3 def self.layout(s) 4 end 5 end 6end

みたいなのがあって、このSessionsController.layoutメソッドを呼んでいます。


layoutメソッドについて
Railsガイド レイアウトとレンダリング
より
コントローラークラスは

ruby

1class ProductsController < ApplicationController 2 layout "inventory"

みたいにすると、そのコントローラで使うレイアウトを選択できます。
これはクラス定義時にクラスメソッドlayoutを呼び出しています。
クラス定義時にはselfはクラス(ここではProductsController)になるため
ProductsController.layout "inventory"と大体等しくなります。

これと同様のことを行っているのが、SessionsController.layout "devise"です。

投稿2020/06/28 10:05

編集2020/06/29 08:26
asm

総合スコア15149

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sansyou69

2020/06/29 08:06

お答えありがとうございます。 ぼんやりとですが、だいぶ理解できました。 ::は、「定数のスコープ演算子」なのですね。初耳なので、ググって調べました。 layoutって、プロパティの一種だと思っていましたが、「メソッド」であり、上の例でいくと、入れ子順に、 application,html → devise.htm → Sessionsなどのコントローラーのアクションを反映・・・みたいな感じでしょうか。 おかげさまで、前に進むことができます。 また、何かでお会いする機会がございましたら、よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問