carrierwaveの自動生成スクリプトをみてたらこんな記述が...
# Never trust parameters from the scary internet, only allow the white list through. def picture_params params.require(:picture).permit(:image) end
これはstrong_parameterという奴で、Rails4から標準実装されています。
今迄は変なparamを仕込んでおく事でアレ気な挙動をさせられてしまう懸念がありました。
このstrong_parameterが標準となった事で、特定のパラメータ以外を渡した場合、400を吐いて拒否するようにできます。
使い方
一つのモデルへ複数のパラメータを渡したい場合、複数行に書きます。
Private def check_params params.require(:token) params.require(:post).permit(:title) end
外部APIから来たデータを活用する場合は
受け取ったデータをActionController::Parametersのインスタンスとして変換する方式をとるようです。
raw_parameters = { :email => "john@example.com", :name => "John", :admin => true } parameters = ActionController::Parameters.new(raw_parameters) user = User.create(parameters.permit(:name, :email))
strong_parameterで扱われるparamは全部載せになります。
単にフラグとして使ってるだけのparam場合はメソッドを分けます。
Private def picture_params params.require(:picture) end def flag_params params.require(:post).permit(:title) end