ROR [Note.6 ]操作資料庫Model

20 1月, 2016

ROR [Note.6 ]操作資料庫Model






(一)資料庫操作練習
(詳細的操作,可以觀看iHower大神的教學影片https://www.youtube.com/watch?v=VdvYJ3h2cdU)

透過以下指令進入 Rails的controller來操作資料庫的Model
$rails c
如果要離開controller,輸入「exit」即可。


上次已經建立了一個Model「Event」 與 資料表「events」
在Rails而言每個model都對應一個資料表


建立一筆資料
e  = Event.new
賦予值 (把欄位直接當屬性來使用)
e.name = "aaaaa" (把欄位直接當屬性來使用)
正式寫入資料庫(沒有使用save前,都不算寫入到資料庫)
e  = e.save


查詢一筆資料(1代表資料的唯一ID)
a  = Event.find(1)
查詢3筆資料(capacity>=100的資料,按照降冪排序,a為陣列)
a = Event.where(["capacity >= ?" , 100]).limit(3).order("id desc")接.當屬性來使用)

取得第一筆資料
a  = Event.first接.當屬性來使用)
取得最後一筆資料
a  = Event.last


(二)資料驗證(ActiveRecord)
資料驗證,在Rails上也是一件看起來很方便的事情
在上次使用$rails g model指令產生了二個檔案
(1)app/model/event.rb           一個ActiveRecord (資料驗證用)
(2)db/migrate/時間搓記.rb   一個migration (資料庫的定義檔)
  

通常我們在做一些類似資料填寫的時候。
都需要判斷是否該資料有確實填入或是進行一些轉換。
而ActiveRecord就能做到這件事情。





validates_presence_of  (用來判斷資料是否空值)

上圖加入了這行「validates_presence_of  :name」以後,在資料寫入的過程,就會去判斷name這個欄位是否是空值。

如果name的欄位是空值,則該筆資料再save的時候就會回傳失敗,且不會寫入資料庫。
(可以使用 e.errors 或是 e.errors.full_messages 來查詢錯誤原因)



-----------------------------------------------------------------------------------------------------------------------



(三)正式操作
了解了資料庫的建立以及資料驗證的機制,
接下來就正式開始操作資料庫。


目的:做出能夠讓資料庫顯示資料的頁面

     
 (1)重新建立一個Controller 
     $rails g controller event

 (2)更改Route設定(如果有使用外卡路由),則不需要更改。
       get "event"=> "event#index"

 (3)撰寫Controller的Action
     宣告了一個變數@events,把「Event」所有的資料都抓出來
     @是為了能讓Template能夠抓到該變數的值


 (4)撰寫前台頁面(index.html.erb)
     在views/event底下創建一個index.html.erb的頁面
     並且將代碼加入

   在這裡將controller剛剛定義@events, 用了一個for each的迴圈,
   將每一筆資料倒出。並且打印出來


 <%   %> 是rails能夠在前台執行後台的一個標籤
  <%= %>加了「=」則可以將內容的資訊打印出來 (類似php的 echo)



此範例也可以看出 Rails的For each,是需要加一個end,來告訴它到哪裡是結尾

<%= @events.each do |e| %>
    <%= e.name %>
<% end %>

<%= @events.each do |e|  end%>

這二行效果一樣的,只是第一段會將每一筆打印出來

以上就建立一個read的頁面了
http://localhost:3000/event



張貼留言