備忘録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 companys
※companyの複数形はcompaniesなんですが、まぁ問題なく動いてるからヨシ!!!!
・View作成
rails g devise:views users
rails g devise:views companys
※前述の通りcompanysは正しい複数形じゃあないんですが、動くからヨシ!!!!
ここは通常と同じです。
専用の操作は次の手順から。
5:configを書き換える
こんな感じの表記を。
この様に書き換える。
6:専用コントローラーを編集する
このような記述があるので…
この様に書き換える!
デフォルトのemail,password以外に追加するカラムがある場合は
2枚目SSの様に、追加したいカラムを全て記述しておく。
※SSはrubocopに記述を簡略化された後です。なので下記の記述でOK。
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up,
keys: [:name, :profile,(以下省略])
end
7:ルーティングする
この様にルーティングを行う。
デフォルトのままにするとController#Actionが被り、大変よろしくない。
8:ユーザー編集機能を実装する場合
先ほどと同じファイルにこの様な記述があるので。
この様にコメントアウトを外す。
2枚目SSは先ほどと同じように編集可能にするカラムを書き加える。
これでユーザー情報の編集もOK。
もう1つのモデルも全く同じ手順でいけます。
ここのbefore_actionのコメントアウトを忘れやすいです。
わたくしはここを忘れて1時間程無駄にしました(おこ
9:終わりに
アカウントが一般向けと、業者やサークル向けなどで分かれているサイトはしばしば目にします。
全部が全部Railsで製作、ましてやdeviseが利用されている訳じゃあないのでケースバイケースではありますが、知っておくとかなり便利なんじゃあないかと思います。
終わり!!!!!!!!!!!
この記事が気に入ったらサポートをしてみませんか?