0
Help us understand the problem. What are the problem?

posted at

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

となる。

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

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?