teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

回答の誤りを修正(アカウント更新なら :account_update を指定するのが正しい)

2020/03/05 03:24

投稿

shinoharat
shinoharat

スコア1685

answer CHANGED
@@ -19,4 +19,33 @@
19
19
  - devise_parameter_sanitizer.for(:sign_in) << [:user_name, :select]
20
20
  + devise_parameter_sanitizer.permit(:sign_up, keys: [:user_name, :select])
21
21
  end
22
+ ```
23
+
24
+ --
25
+
26
+ ## 追記(2020/3/5)
27
+
28
+ すみません。上記の回答で
29
+
30
+ > 【2】アカウント登録・編集画面を変えたいなら :sign_in ではなく :sign_up を指定してください。
31
+
32
+ と書きましたが、間違いでした。
33
+ 正しくは
34
+
35
+ アカウント登録なら :sign_up を指定
36
+ アカウント更新なら :account_update を指定
37
+
38
+ です。
39
+ 最終的には以下のようなコードになると思います。
40
+
41
+ ```rb
42
+ before_action :configure_permitted_parameters, if: :devise_controller?
43
+
44
+ private
45
+
46
+ # 登録&更新時にユーザーネームとセレクトエージェントを許可する
47
+ def configure_permitted_parameters
48
+ devise_parameter_sanitizer.permit(:sign_up, keys: [:user_name, :select])
49
+ devise_parameter_sanitizer.permit(:account_update, keys: [:user_name, :select])
50
+ end
22
51
  ```

1

誤字修正

2020/03/05 03:24

投稿

shinoharat
shinoharat

スコア1685

answer CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  【1】before_action で指定しているメソッド名と、実際のメソッド名が一致していないようです。
4
4
 
5
- 【2】アカウント登録・編集画面を変えたいなら `:sign_in` でなく `:sign_up` を指定してください。
5
+ 【2】アカウント登録・編集画面を変えたいなら `:sign_in` でなく `:sign_up` を指定してください。
6
6
 
7
- 【3】 `devise_parameter_sanitizer.for` って見慣れなかったので調べたのですが、かなり古い書き方みたいです。
7
+ 【3】 `devise_parameter_sanitizer.for` というメソッド、見慣れなかったので調べたのですが、かなり古い書き方みたいです。
8
8
  [公式のページで紹介されている新しい書き方(devise_parameter_sanitizer.permit)](https://github.com/heartcombo/devise#strong-parameters) に変えてみてください。
9
9
 
10
10