見出し画像

備忘録13:Rails-deviseでモデルを複数扱う

転職のための3月6日から某スクールにでプログラミング学習を始めた32歳のおっさんです。時系列でHTML⇨CSS⇨Rails & JavaScript &SQLを学習中。
最近C#とPHPにも興味が湧いてきた。


1:開幕の自問自答

①ユーザーアカウントって複数種類欲しくない?
 ⇨と言うと?
②一般用とサークル用みたいな?
 ⇨種類毎に機能を分ける感じっすか?
③そんな感じです。
 ⇨確かにその方が悪戯は減らせるし、ユーザーも分かり易いですね。
④でしょ?だから作りますよ。
 ⇨やったぜ。


と、言うわけで本日はdeviseで複数のモデルを扱う方法です。
専用コントローラーを使うので考えようではモデル1つよりこっちの方が楽かもです。


2:環境

①OS:Mac BigSur
②Rails:6.0.0
③devise:4.8.0


3:全体の流れ

①Model・controller・viewを作る
②configを書き換える
③専用コントローラーを編集する
④ルーティングを行う
⑤ユーザー編集機能を実装する場合


4:Model・Controller・Viesを作る

・Model作成

rails g model user
rails g model company
Controller作成

rails g devise:controller users
rails g devise:controller companyscompanyの複数形はcompaniesなんですが、まぁ問題なく動いてるからヨシ!!!!
View作成

rails g devise:views users
rails g devise:views companys

※前述の通りcompanysは正しい複数形じゃあないんですが、動くからヨシ!!!!

ここは通常と同じです。
専用の操作は次の手順から。


5:configを書き換える

スクリーンショット 2021-06-28 14.10.54

こんな感じの表記を。


スクリーンショット 2021-06-28 14.11.25

この様に書き換える。


6:専用コントローラーを編集する

スクリーンショット 2021-06-28 14.18.17

スクリーンショット 2021-06-28 14.18.42

このような記述があるので…


スクリーンショット 2021-06-28 14.19.14

スクリーンショット 2021-06-28 14.19.28

この様に書き換える!
デフォルトのemail,password以外に追加するカラムがある場合は
2枚目SSの様に、追加したいカラムを全て記述しておく。
※SSはrubocopに記述を簡略化された後です。なので下記の記述でOK。

def configure_sign_up_params
   devise_parameter_sanitizer.permit(:sign_up,
                                     keys: [:name, :profile,(以下省略])
 end


7:ルーティングする

スクリーンショット 2021-06-28 14.30.53

この様にルーティングを行う。
デフォルトのままにするとController#Actionが被り、大変よろしくない。


8:ユーザー編集機能を実装する場合

スクリーンショット 2021-06-28 14.34.10

スクリーンショット 2021-06-28 14.34.31

先ほどと同じファイルにこの様な記述があるので。


スクリーンショット 2021-06-28 14.34.55

スクリーンショット 2021-06-28 14.35.08

この様にコメントアウトを外す。
2枚目SSは先ほどと同じように編集可能にするカラムを書き加える。
これでユーザー情報の編集もOK。
もう1つのモデルも全く同じ手順でいけます。

ここのbefore_actionのコメントアウトを忘れやすいです。
わたくしはここを忘れて1時間程無駄にしました(おこ


9:終わりに

アカウントが一般向けと、業者やサークル向けなどで分かれているサイトはしばしば目にします。
全部が全部Railsで製作、ましてやdeviseが利用されている訳じゃあないのでケースバイケースではありますが、知っておくとかなり便利なんじゃあないかと思います。



終わり!!!!!!!!!!!

この記事が気に入ったらサポートをしてみませんか?