0
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 5 years have passed since last update.

プログラミング学習(五日目)その2 ProgateでRuby on Rails レッスン5 バリデーション、フラッシュ

Last updated at Posted at 2019-09-01

#今日学んだこと

  • 目次
    • バリデーション
    • saveメソッドの戻り値
    • renderメソッド
    • エラーメッセージ表示
    • フラッシュ

##バリデーション
####バリデーションとは
不正なデータがデータベースに保存されないために、データをチェックする仕組み。

####バリデーションの書き方
バリデーションはモデルで設定する。
書き方は
validates :検証するカラム名, {検証する内容}

具体的に書くと、

models/post.rb
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メソッド」を使うと、アクション名とは違うビューファイルを指定することができる。
具体的には、

posts_controller.rb
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」で表示するのを推奨。

0
0
4

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
0
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?