rails require permit メソッドとは


結論

データベースに予期せぬ値が入らないように、ユーザーが入力する値を制限するメソッドの一種。

~.rb
params.require(テーブル名).permit(カラム名)
  • require:  〜を要求する
  • permit : 許可を与える

具体例

投稿アプリにて、ユーザーがデータを入力し保存されるまでの順序

ユーザーがフォーム(記入欄)に入力

new.html.erb
 <%= form_with model:@user, url: user_path, method: :post, local: true do |f| %>
<p> 名前 : <%= f.text_field :name %></p>
<%= f.submit "送信" %>
# model:@user  モデルオブジェクトにユーザーが入力したデータがないか判断する
# url: user_path  入力した値をどこに渡すか指定
# method: :post  入力した値がデータベースにない場合→createアクション
# 入力した値がデータベースにある場合→updateアクション
# 入力した値のHTTPメソッドを指定できる
# f.text_field :name 入力した値が nameカラムに入る
# f.submit 送信ボタンが生成されるらしい

値を入力し、送信ボタンを押すと model:@user, url: user_path,method: :postにより

routes.rb
Rails.application.routes.draw do

 post "/users", to: "users#create"

end

と処理され

controller.rb
class UsersController < ApplicationController

 def create
      User.create(user_params)
    end

  private
    def user_params
      params.require(:user).permit(:name)
    end            # ここでユーザーの入力した値がuserの中のnameだけに保存されるように制限がかけられる
end

となる。

かなり複雑ですね。以上です。