Ruby on Rails 第一步 學習筆記


此篇文章為筆者學習過程記錄的筆記
用來當作雲端記憶放置和學習交流使用

Rails資料庫

Model: 大寫 單數 (虛擬 可看成軟體)
Table: 小寫 複數 (實體 可看成硬體)

會特別在Model設定Foreign Key 是為了不讓資料傳送時有斷頭的可能


執行專案前

遇到接手別人檔案但不確定版本是否相容時,最常用的是
$bundle install

bundle install 比 bundle update穩定因為使用bundle update時會將特定的Gem升級到最新版。

  • $Bundle update "Gem檔名"
    但當整包bundle有不相容的情況時就會產生問題,如果想將特定Gem升級更新,建議一次更新一個套件,避免找不到相容的套件.

  • $Gem install
    如果要將專案推到GitHub上最好也將更新過的Gemfile.lock 一起推到資料庫上,這樣協作者可以使用和你一樣的版本做專案。


使用終端機新增model方式:
$rails g model 檔名(開頭大寫單數) name :'string'
會自動新增一個db/migration(實體資料庫)

在DB上做實體驗證
MODEL本身個虛層,負責做虛擬驗證和資料看管,並不是實體資料庫
雖不是100%安全 因為實體驗證一被修改很可能可以繞過虛擬驗證去做修改

$rails c --sandbox 沙盒模式下可作一些安全變動
$rails -save 儲存後也不會改變專案,但可測試結果為何
$exit 跳出沙盒模式

$rails c(進入console模式下做資料庫查詢)

  • User.find_by 找到就有一筆資料 找不到就是nil
  • User.where 找到就有資料 找不到還是有一個空陣列

controller裡的render是用erb檔案做渲染
view的render叫做局部渲染 字串規則是要在檔案路徑下的檔名加底線

  • 關連式資料庫是ruby的強項

一開始新手可先從最底層的資料開始規劃順序: 品項表單 >> 訂單

在controller裡面養成習慣,即使沒有要做任何動作預備放一個action在裡面,方便日後維護。

class ItemsController < ApplicationController
  def index 
  end
end
  • 新增一個分類Category 的類別

$rails g scaffold Category name

會產生出已做好的品項再用Category包起來產生出有scaffold的架構

  • 新增一個migration
 $rails g migration add_categories_id_to_items
 $rails db:migrate


 做完$rails db:migrate之後發現資料寫成複數categories
 想改回category 現在只能用rollback去回溯

 !!!如果已經在migration裡面做了檔案rollback之後會被刪除!!!

 建議如果不想再重做請直接使用新增Migration做修正

 $rails db:rollback


 修改完migration裡的資料再做一次$rails db:migrate

 如果遇到想要新增migration裡面的資料欄位時
 要再新增一次??????


ViewHelper

把要給View的複雜的邏輯放到這裡做
不要全部都塞controller做成實體變數使用
分類功能讓之後維護更方便


Controller

檔名要用複數
手動在編輯器裡開Controller也可以
用終端機自動產生會生出其他頁面 各有好壞


安裝專案缺少Javascript的Gem

$yarn install--check-files


run help bin/webpack

終端機開這個可以加速瀏覽器顯示即時的修改畫面
$bin/webpack-dev-server


修改圖片大小的套件

$ brew install ImageMagicK

安裝完成後(會花一小段時間)


CDN

content deliver network

依賴網路的外表,除了自己私人練習不太建議用CDN,以防網路斷掉吃不到套件。

在Rails裡面做Bootsrap的CSS

rails 版本6已經可以把Bootstrap的CSS獨立一個檔案出來寫

Rspec

做專案時很多運算不能很有把握能有效運作,先寫測試再寫程式

參照[Unit Test]AAA原則

Gem Faker

可在沙盒模式下作模擬

RAILS_ENV=test rails c --sandbox (在test模式下開沙盒)

RAILS_ENV=test rails server

#Rails #RoR #ruby






你可能感興趣的文章

決定實行早睡超早起計劃

決定實行早睡超早起計劃

[ 筆記 ] API 文件 範例

[ 筆記 ] API 文件 範例

[Release Notes] 20200926_v1 - Refined main style to Dark Mode

[Release Notes] 20200926_v1 - Refined main style to Dark Mode






留言討論