結論
データベースに予期せぬ値が入らないように、ユーザーが入力する値を制限するメソッドの一種。
~.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
となる。
かなり複雑ですね。以上です。