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

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

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

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

Ruby

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

Q&A

解決済

1回答

3348閲覧

[Rails5] Deviseでモデルに保存している処理

marokatsu

総合スコア38

Ruby on Rails 5

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

Ruby

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

1グッド

0クリップ

投稿2018/07/03 16:21

deviseでDBに保存する処理がわかりません。

ユーザ認証にdevise gemを利用しています。
新規登録画面でメールアドレスとパスワードを入力し、登録ボタンを押した際、
入力情報がDBに保存されます。
保存されることは確認できているのですが、どの処理でDBにレコードを追加しているのかがわかりません。

railsチュートリアルでは@user.saveを使っていてこの時にDBに保存されるのですが、
deviseではdeviseコントローラーを作ったわけでもなく
また、保存する処理をプログラムに追記したわけでもありません。

deviseのgemによって、自動的にデータがDBに保存される、と考えているのですが
しっかり理解したいと思っています。

なにとぞご教授をお願いします。

退会済みユーザー👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

ユーザー登録はapp/controllers/users/registrations_controller.rbcreateアクションで処理されています。
処理を自分で書かなくてもいいのは継承元のDevise::RegistrationsControllerにすでに処理が書かれているからです。
ですので、もし処理の内容を変更する場合は自分で処理を上書きする必要があります。
継承元のソースコードはここに書いてあります。

投稿2018/07/04 03:13

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

marokatsu

2018/07/04 14:57 編集

buta_bottiさんありがとうございます! 継承して処理は継承元に書かれているのですね。納得しました! ただ、app/controllers/users/registrations_controller.rb を確認したのですが、自分のプロジェクトにはファイルがありませんでした。 deviseをinstallした時にapp/views/deviseフォルダが作られているのですがここの中でしょうか? app/models/user.rbはあるのですが、ここにもdeviseの記述がありました。 (追記) rake routesの結果に new_user_registration GET /users/sign_up(.:format) devise/registrations#new とあったのですが、devise/registrationsコントローラーとnewアクションがプロジェクトのどこかにあるということでしょうか?
退会済みユーザー

退会済みユーザー

2018/07/04 23:02

ファイルがないことについてはよくわかりません、モデルの作成方法やRailsやgemのバージョンが違ったのかもしれません。僕はuserモデル作成時にそのファイルが生成されたってだけです。 viewフォルダの中はview関連のファイルしか入ってません。 追記の「devise/registrations#new」とあるのであれば app/controllers/devise/registrations_controller.rb みたいな形でファイルが存在するのかもしれませんね。
Cojiro

2018/07/05 04:17

横から失礼します。 deviseをinstallした時点では、各種controllerは作成されません。 ``` rails generate devise:controllers users ``` 上記のコマンドを実行すると、 controllers/users 以下にdeviseの〇〇_controllerが作成されます。 -c=registrations というオプションをつけるとregistrations_controllerのみ作成されます。 routes.rbに利用したいコントローラーを設定します。 ``` devise_for :users, controllers: { registrations: 'users/registrations' } ``` これでusers/registrations_controllerの設定が完了します。 継承元のファイルは、bundlerのインストール先か、githubで確認可能です。
marokatsu

2018/07/05 15:38

>buta_bottiさん ありがとうございます! viewフォルダなのでview関連のものしかありませんよね。。。 deviseがどんな動き方をしているのか知りたくて質問しました 教えていただきありがとうございました!^^ >kojiro12345さん ありがとうございます! devise用のコントローラーの利用の仕方まで教えていただき感謝いたします。 installするだけではcontrollerは作成されず、deviseコントローラーをuserに関連付けるという感じでしょうか。 継承元のファイルも詳しく読んでみたいとおもいます ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問