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

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

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

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

Q&A

解決済

1回答

1503閲覧

railsのdevise Controller内のcreateアクションでresource.inspectで値が取れる理由が知りたい!

T.Adams

総合スコア40

Ruby on Rails 6

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

0グッド

0クリップ

投稿2020/02/15 05:33

編集2020/02/15 06:11

分からないこと

resource.inspectを利用することで、フォームに入力した情報をdevise内のController内で表示できる理由がわかりません。詳細は、補足情報にも記載しております。

実行コマンド

  • rails g devise:install
  • rails g devise:views
  • rails g devise User
  • rails g model Profile User:references name:string
  • rails g devise:controllers users

補足情報

以下のYouTubeを参考にRuby on Railsでアプリを作成しております。本動画の39:40あたりから開始する部分でその実装が行われますので、もしお時間あれば見てもらえるとわかりやすいかと思います。resource.inspectにViewのフォームにユーザが入力した情報が入ってくることを説明する部分で、表示されるファイルがdevise/registrations_controller.rbとなっていますが、私がrails newして作成したアプリの中にはそのようなファイルがないため、確認ができません。

Ruby on Railsでブログを作ろう

ソース

Ruby

1class Users::RegistrationsController < Devise::RegistrationsController 2 3 # POST /resource 4 def create 5 super 6 puts "===========#{resource.inspect}===========" 7 end

環境情報

  • rails: 6.0.2.1
  • Ruby: 2.6.3
  • devise: 4.7.1

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

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

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

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

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

guest

回答1

0

ベストアンサー

resourceはdeviceが定義してる変数です。
deviseのソースコード: GitHubから引用します。

rb

1class DeviseController < Devise.parent_controller.constantize 2 ... 3 # Gets the actual resource stored in the instance variable 4 def resource 5 instance_variable_get(:"@#{resource_name}") 6 end 7 ... 8end

Users::RegistrationsControllerDeviseControllerを継承しているので、この変数が参照できます。

また、inpsectはオブジェクトの内容を文字列で表示するRubyのメソッドです。
Object#inspect (Ruby 2.7.0 リファレンスマニュアル)
resource.inspectを実行すると、resource変数の中身を返します。

投稿2020/02/15 07:18

shgtkshruch

総合スコア665

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

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

T.Adams

2020/02/16 04:01

確認できました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問