Ruby學習筆記

數據庫潛規則

▪  數據庫表名:複數,下劃線分隔單詞(例如 book_clubs) 
 ▪  模型類名:單數,每一個單詞的首字母大寫(例如 BookClub) 
git

▪  外鍵:使用 singularized_table_name_id 形式命名,例如 item_id,order_id。建立模型關聯後,Active Record 會查找這個字段;
▪  主鍵:默認狀況下,Active Record 使用整數字段 id 做爲表的主鍵。使用 Active Record 遷移建立數據 庫表時,會自動建立這個字段;
▪ created_at:建立記錄時,自動設爲當前的日期和時間;
▪ updated_at:更新記錄時,自動設爲當前的日期和時間;
▪ lock_version:在模型中添加樂觀鎖; _
▪ type:讓模型使用單表繼承;
▪ (association_name)_type:存儲多態關聯的類型;
▪ (table_name)_count:緩存所關聯對象的數量。好比說,一個 Article 有多個 Comment,那麼 com- ments_count 列存儲各篇文章現有的評論數量; 
github

其餘命名潛規則

▪ 類名、模塊名和常量應該用大寫字母開頭
▪ @ 後面不能夠直接跟 數字數據庫

Grape api response body :present

[https://ruby-china.org/topics/21214]api

{
	code: 1000,
	msg: "OK",
	data: {
		// normal data goes here if exists
	}
}

present :items, Book.all, with: Entities::Book緩存

attr_accessor

是建立變量的可讀可寫屬性ruby

raise LogicError

throw new LogicErrorapp

camelize

'active_record'.camelize # => "ActiveRecord"post

rescue 異常捕獲

[https://ruby-china.org/topics/9351]fetch

感嘆號

[https://github.com/quanzhanying/fullstack-course/wiki/%E5%85%B3%E4%BA%8E-Ruby-%E6%96%B9%E6%B3%95%E5%90%8D%E5%90%8E%E7%9A%84%E9%97%AE%E5%8F%B7%E5%92%8C%E6%84%9F%E5%8F%B9%E5%8F%B7] 方法名後面加感嘆號是 Ruby 的編碼風格規範,用來表示該方法會去修改對象自己,Ruby 會把帶有感嘆號的方法稱爲危險的方法,由於程序中可能有其餘地方會引用這個對象。可是並不會強制該方法必定要修改對象自己。編碼

find_by/find_by! find_by:假設不存在返回nil_ find_by!:假設不存在拋出異常_

語法

[https://www.jianshu.com/p/e0374c038dda]

Rails MVC

(Ruby on Rails教程 中文版)

路由

ActionDispatch::Routing::Mapper::HttpHelpers 中定義了在route裏能夠設置的5種HTTP via get 'bacon', to: 'food#bacon’ post 'bacon', to: 'food#bacon’ patch 'bacon', to: 'food#bacon’ put 'bacon', to: 'food#bacon’ delete 'broccoli', to: 'food#broccoli’

最終調用的仍是match方法 match 'path' => 'controller#action', via: patch match 'path', to: 'controller#action', via: :post match 'path', 'otherpath', on: :member, via: :together

緩存

來源

  1. ActiveRecord層緩存 在rails的model層中能夠手動緩存某些業務結果到對應的緩存存儲系統裏。
Rails.cache.fetch(key, expires_in: 1.hour) do 
....
end

object#try 對潛在的 Rails 中的 nil 調用方法-來源

nil.send(:downcase)
NoMethodError: undefined method `downcase' for nil:NilClass
nil.try(:downcase)
=> nil
相關文章
相關標籤/搜索