【Rails】Model.newにparamsを渡してしまうのは危険
こんなコードは危ない
# controllers/users_controller.rb def create @user = User.new(params[:user]) ... end
ユーザー情報すべてを渡してしまっているため、
管理者フラグを含めるカラムが存在する場合、
リクエストにadmin=1相当のデータを含めることで、
意図しないユーザーに意図しない権限を渡してしまう。
どう防ぐのか
Strong Parametersで意図的に、リクエストのどのデータを渡すか明示する。
# controllers/users_controller.rb def create # Strong ParametersをUser.newに渡している @user = User.new(user_params) ... end # 外部から変更されたくないのでprivateメソッドにする private def user_params params.require(:users).permit(:name, :email) end