本投稿の目的
・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で指定したモデルのプロパティをキーに指定