開發網站的時候,資料驗證非常重要,我們都不希望有一些奇怪的資料塞在裏面,所以我們要做驗證!
我在書上看到下面3大重點,來筆記一下吧:
- 前端驗證:在HTML頁面使用JavaScript在使用者填寫資料的時候檢查
1.接下來我們,在Product Model希望每個商品的name都為必填,資訊可以這樣寫:
class Product < ApplicationRecord
has_many :planet
has_many :stores, through: :planet
validates :name, presence: true
end
2.validates :name, presence: true
意思是 name這個欄位為必填欄位
3.接著,我們開rails c起來試試看:
w1 = Product.new
(0.5ms) SELECT sqlite_version(*)
=> #<Product id: nil, name: nil, description: nil, price: nil, is_available: nil, store_id: nil, cre...
4.先用new
方法建立一個Product物件,用errors
這個方法來看這物件有沒有什麼狀況?
> w1.errors.any?
=> false
5.看起來沒有什麼問題,接著我們使用save
方法,把這個物件存入資料表中:
> w1.save
=> false
6.但依照我們看到的情況下,好像失敗了,回傳了false
回來,接下來我們比需看看是什麼問題?
> w1.errors.any?
=> true
7.以上面來看是沒有問題,但在下了save
這個方法之後就會有問題,所以我們必須知道錯誤訊息是什麼?
> w1.errors.full_messages
=> ["Name can't be blank"]
我們可以看到他上面寫Name不可以是空白!
那驗證沒過的時候,該怎麼辦?
當我們看到資料驗證沒有過關的時候,我們可以透過物件本身有errors
的方法得知。
進入rails c
我們先做一個Product新物件,其中name
欄位必填欄位:
> product1 = Product.new
(0.3ms) SELECT sqlite_version(*)
=> #<Product id: nil, name: nil, description: nil, price: nil, is_available: nil, store_id: nil, cre...
接著,我們呼叫save
方法,把這筆資料寫進資料表內:
> product1.save
=> false
看來是失敗了!!!!
這時,我們透過errors
方法來看看哪邊有錯誤?
記得下一步還要用full_messages
錯誤信息印出來,這樣才會明確的知道資料是在哪邊出了問題!
> product1.errors
=> #<ActiveModel::Errors:0x0000000125175fb8 @base=#<Product id: nil, name: nil, description: nil, price: nil, is_available: nil, store_id: nil, created_at: nil, updated_at: nil>, @errors=[#<ActiveModel::Error attribute=name, type=blank, options={}>]>
> product1.errors.full_messages
=> ["Name can't be blank"]
是因為你的name這格欄位沒有填寫!
今天就分享到這邊!麻瓜日記漸漸到了尾,即使要結束了,仍舊會繼續努力!!!!
參考資料:為自己學Ruby on Rails