#疑問点
写真投稿アプリ作成過程において、「ツイート投稿時」と「ログイン認証時」にそれぞれpermitメソッドを使用した。しかし双方のpermitメソッドのコード規則に一貫性を感じない。疑問に感じたので調べてみることにした。
#調べた内容
①コードの確認
まずは双方のコードを振り返ってみる。
【ツイート投稿時】
記述内容:params.require(:tweet).permit(:name, :image, :text)
記述汎用:params.require(:モデル名).permit(:キー名, :キー名)
【ログイン認証時】
記述内容:devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname])
記述汎用:devise_parameter_sanitizer.permit(:アクション名, keys: [:キー名])
やはりpermitメソッドのコード規則が上下で異なっている。
ちなみに「application_controller.rb」ファイルはdevise Gemを用いて生成している。この辺りに解決のヒントがあるのだろうか。
②ウェブ検索
次にdevise Gemについて調べてみた。
どうやらpermitメソッドが追加されたのは、devise4というバージョンからのようだ。
#仮説
①rails newにより生成されるruby on railsのGem郡にpermitメソッドの定義がある。
またdevise:installにより生成されるGemにもpermitメソッドの定義がある。
②上記のpermitメソッドは別物である。
③devise Gemを通じて生成されたファイルはdevise内のpermitメソッドが適応される。
#検証結果
①の仮説を検証するべくdevise Gemのコード表を確認すると、permitメソッドに関するコーディングが記載されていた。「application_controller.rb」でのpermitメソッドはdevise Gemのコーディング規則に基づいていることが確認できた。
→同じ名前のメソッドでも、定義元のGemファイルによってコーディング規則は異なる。