?
常用命令
?
- rails?new?new_app?
- ?
- cd?new_app
- ?
- rake db:create
- ?
- rails?server?
- ?
- rails?generate?controller?Blog?action1?action2
- ?
- rails generate scaffold Product title:string description:text
- ?
rails generate model Comment commenter:string body:text post:references
?
- rake db:migrate
- ?
- rake db:rollback
- ?
- rails test:units
- ?
- rails?console?
約定
rails中有很多的約定,正是這些約定幫我們節省了時間,讓我們很清晰的明白項目的結構,文件的位置。
表名約定
表名默認使用model的復數形式,小寫。例如:model是Sheep,默認的表名就是sheeps,如果我們想自定義一些其他名字,或者基于一個已經存在的數據表進行開發,不能修改這個數據表的名稱,那么我們可以通過下面的代碼來指定表的名稱。
?
- class?Sheep?<?ActiveRecord::Base?
- ?
- ??self.table_name?=?"sheep"?
- ?
- end?
表主鍵的約定
默認主鍵名稱id,整型,自增。在數據表中名稱就是id,在model中也通過.id來訪問。如果想指定其他名稱,可以通過下面的代碼實現。
?
- class?LegacyBook?<?ActiveRecord::Base?
- ?
- ??self.primary_ke?=?"isbn"?
- ?
- end?
通過上面的修改之后,數據表的主鍵列名稱變為isbn,在model中也通過.isbn來訪問。但是有一個地方例外,就是給主鍵賦值,還是需要使用id來賦值。
?
- book?=?LegacyBoo.new?
- book.id?=?"1-214-985"?
- book.title?=?"programming?in?ruby"?
除了給主鍵賦值需要用id,其他時候都用指定的列名。
model的關系
表關系有三種:
one-to-one
one-to-many
many-to-many
在model中使用的聲明有:has_one, has_many, belongs_to, has_and_belongs_to_many。
one-to-one
?
- class?Order?<?ActiveRecord::Base?
- ??has_one?:invoice?
- end?
- ?
- class?Invoice?<?ActiveRecord::Base?
- ??belongs_to?:order?
- end?
一個訂單有一個發票抬頭,一對一的關系。
有一條很重要:包含外鍵的表,一定會有一個belongs_to的聲明。
one-to-many
?
- class?Order?<?ActiveRecord::Base?
- ??has_many?:line_items?
- end?
- ?
- class?LineItem?<?ActiveRecord::Base?
- ??belongs_to?:order?
- end?
一個訂單會有很多的item,一對多的關系。
many-to-many
?
- class?Product?<?ActiveRecord::Base?
- ??has_and_belongs_to_many?:categories?
- end?
- ?
- class?Category?<?ActiveRecord::Base?
- ??has_and_belongs_to_many?:products?
- end?
一個產品屬于多個目錄,一個目錄包含多個產品,多對多的關系。除了products表和categories表,會有一個中間表categories_products(category_id, product_id)來存放這個關系。
我們也可以自己定義關系表,還可以存放一些其他信息,一些關于關系的信息。其實就是把多對多的關系拆分開,成為兩個一對多的關系,這樣也好理解些。
?