#今日学んだこと
- 目次
- バリデーション
- saveメソッドの戻り値
- renderメソッド
- エラーメッセージ表示
- フラッシュ
##バリデーション
####バリデーションとは
不正なデータがデータベースに保存されないために、データをチェックする仕組み。
####バリデーションの書き方
バリデーションはモデルで設定する。
書き方は
validates :検証するカラム名, {検証する内容}
具体的に書くと、
class Post<ApplicationRecord
validates :content, {presence:true}
end
この内容は「contentカラム」に「値が存在するのか」をチェックしている。つまりcontentが空だと保存できない。
他には、{length:{maximum:140}
と書くと、最大文字数を140に設定している。
また、検証する内容を入れるところはハッシュとなっており、
{presence:true, length:{maximun:140}}
と書けたりもできる。
##saveメソッドの戻り値
saveメソッドは、保存に成功すると「true」、失敗すると「false」を返す。
##renderメソッド
コントローラにおけるアクションとは、そのコントローラと同じビューファイルのフォルダからアクション名と同じビューファイルを指定し、
ブラウザに表示するものだが、この「renderメソッド」を使うと、アクション名とは違うビューファイルを指定することができる。
具体的には、
def update
render("posts/edit")
end
とすると、updateアクションからviews/posts/edit.html.erbを指定し、ブラウザに表示できる。
##エラーメッセージの表示
Railsではバリデーションによってデータの保存に失敗すると、自動的にエラーメッセージが生成され
「errors.full_messages」に配列として入る。
##一度だけ表示される「フラッシュ」
Railsではフラッシュを表示するために「flash」メソッドが用意されている。
アクションにて
flash[:notice] = "表示したい文字列"
とするとビューで「flash[:notice]」が使える。
フラッシュは色々な場面で使うので、「application.html.erb」で表示するのを推奨。