2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】ユーザ入力情報の保護機能

Last updated at Posted at 2020-11-17

本投稿の目的

・Rails学習の議事録です。

学習に使った教材

Udemyの ["はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう"](https://www.udemy.com/course/the-ultimate-ruby-on-rails-bootcamp/) を教材として使用しました。

①Validates(バリデート)

・modelファイルに対して実施 ・ユーザーが入力した値をdb保存する際の条件を指定できる ・Ex)空入力禁止,最大文字数10文字まで...
qiita.rb
def model
  validates :column, 条件: 値の指定
end

【解説】
○validates :column名
⇒条件を課したいcolumn名を記載

○条件: 値の指定
⇒実施したい制約に応じた記述法を記述
⇒以下に2つ例を記述する

・空入力禁止

qiita.rb
presence: true

・最大文字数10文字まで

qiita.rb
length: { maximum: 10 } 

②params

・配列を入れるための箱(ハッシュ) ・ユーザーが送信したデータを一時的にparamsに格納 ・その中から,必要なハッシュにヒットする値を取り出す

【例: ユーザーが名前と年齢をフォームから送信した場合】
・フォームからparams へ次のように格納される

qiita.rb
params = [:name,'naoto', :age,24]

・名前を取得したい場合

qiita.rb
 params[:name]

・年齢を取得したい場合

qiita.rb
params[:age]

③strong_parameters

・指定したcolumn情報以外のフォーム受信値を無視するフィルター

【いつ役に立つ?】
・ECサイトを作成したと想定
・ユーザーがフォームでソースを操作
・ポイントcolumnを修正し残高を高めに変更
・こういった改ざん処理を止めるための設定

【使いかた】
・controller中に記述(フォーム送信後のインスタンス生成時)
・引数にこのメソッドを()で指定する
・フィルタされた値がdbへ格納

【例:question_paramsメソッド】

qiita.rb
params.require(:question).permit(:name, :title, :content)

【paramsには以下が格納された場合を想定】

qiita.rb
params = [
question={name: 'naoto',age: 24, content: '質問内容'},
answer={name: 'kanopyo',age: 27, content: '回答内容'}
]

【解説】
〇.requireについて
⇒モデル名をキーに指定

〇.permitについて
⇒.requierで指定したモデルのプロパティをキーに指定

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?