iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 15
1
自我挑戰組

Ruby菜鳥村村民遊記系列 第 15

遊記ep.15 Validates in Rails村

  • 分享至 

  • xImage
  •  

礙於時間的關係,內容可能會甚為簡略 Orz
今天沒安排好時間給寫文章,請多包涵。

昨天提到了關於把關的手法之一,
那當然少不了所謂驗證這塊囉,

我們先來看看可以怎麼使用:

class Book < ApplicationRecord
  validates :name, presence: true
end

在 Book 這個 Model 中,我們希望在書名這個欄位是必填的,
這樣如果使用者在並未填寫書名欄位的情況下,
就會跳出 "Name can't be blank" 的錯誤訊息,
來告知使用者,必須要填寫書名才能夠前進下個步驟。

我們可以從 rails console 做個實驗~
先讓 b1 = Book.new
當我們執行 b1.save

b1.save
(0.1ms)  begin transaction
(0.1ms)  rollback transaction
=> false

發現被 rollback 了,我們看一下是發生什麼事了呢?

b1.errors.any?
=> true

你有任何錯誤嗎?是的我有。
那我們再來追問下去:

b1.errors.full_messages
=> ["Name can't be blank"]

呼應到前面所說的,書名是必填的欄位,如果沒有填寫就會發生錯誤!

class Book < ActiveRecord::Base
  validates_presence_of :name
end

除此之外,這樣的寫法也可以得到一樣的效果,

驗證資料就是希望我們給使用者填寫的一些資訊,不要被填入一些我們預期以外的資料,
舉例來說身分證字號就是共10碼,但也許誤填的時候我們就要提醒使用者請他修改。
除了驗證必填之外,我們也可以驗證長度(length),
假設我們希望書名不可以超過10個字,價格介於百元到千元之間

class Book < ApplicationRecord
  validates :name, length: (maxmum: 10)
  validates :price, length: (in: 3..4)
end

還有很多種可以被驗證的資訊,可以去官網參考相關文件
那麼,關於驗證就先寫到這裡了,
希望對你有點幫助~

參考文獻:為你自己學 Ruby on Rails


上一篇
遊記ep.14 守護者見參!Strong Parameters in Rails村
下一篇
遊記ep.16 Google Map Api in Google村
系列文
Ruby菜鳥村村民遊記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言