form_forとかstrong paramsとか、感覚的に使っている人も多いと思うんですが、
たまに詰まったのでちょっとずつまとめます。
今回はaction_argsというgemfileを用いて、メソッドのparameterの管理についてまとめます。
ActionArgs 公式ドキュメント
StrongParameters - permit
1. 一列で一気に宣言する方法
ハッシュを用いて、簡単にStrongParameterのpermitメソッドを記述できる。
class UsersController < ApplicationControllerCOnt
def create(user)
@user = User.new(user.permit(:name, :age))
~~~
end
end
2. ありのままに、ホワイトリストを記述する方法(ブラックリストの反対)
ActionArgsは、controllerのclassに、ありのままのpermitsを記述する機能を提供している。
包括的な方法でpermitsをDRYに書きなさい。
class UsersController < ApplicationController
permits :name, :age
def create(user)
@user = User.new(user)
~~~
end
end
ActionArgsは、ターゲットのモデルの名前をコントローラの名前から推定している。例えば、UsersControllerのpermitsは、モデルの名前をUserだと認識している。 もし、違ったら、オプションで指定することも出来るよ。
class UsersController < ApplicationController
permits :name, :age, model_name: 'User'
end