最近在看ROR的東西,并試着實踐了一下。
在看完了ROR那個誘人的demo短片和Eiffel Qiu的rubyonrails.pdf後,我在佩服ror的快捷之餘,有兩個疑問:
1. 如何在ror無法自動找到model和資料庫表格對應關系的時候定義後,如何自定義表格和model ActiveRecord class的對應關系?
2. 示範中在class book中添加了“belongs_to :category”後,自動建立了books中的column category_id和categories表的id的外鍵對應,如果我們不想要用category_id作為字段名的時候如何設定對應關系?
五一有空實踐了一下,這兩個問題可以這樣解決:
1. 定義了一個model之後,rails會自動嘗試着去找到該ActiveRecord class對應的複數形式資料庫表格,并建立相應的屬性。例如如果class名是person的話,rails會自動找到名為people的表格(如果有的話)。
這對于表格名是一些常用詞彙的情況是比較友善,但是對于一些簡寫的資料庫表名或者一些帶有明顯中文色彩的表名(例如gd_novel,gd-廣東)等,rails是無能為力的,無法幫你找到。
這個時候,使用set_table_name進行指定:
class Mouse < ActiveRecord::Base
set_table_name "mice"#這裡定義指定的表格名
end
2. 在ror的api幫助中找到關于belongs_to的幫助,發現要進行自定義外鍵字段名可以這樣定義:
class Book < ActiveRecord::Base
belongs_to(:Category,:class_name => 'Category', :foreign_key=>'cat_id' )
# ^屬性名 ^屬性的實作類名 ^對應categories ID字段的外鍵
end
這樣books表可以這樣定義:Books(id integer, title varchar(100)...cat_id integer...)。
對于ActiveRecord的其他關系定義函數:has_and_belongs_to_many、has_many、has_one等都是通過foreign_key定義外鍵字段名。
〔附〕:ruby on rails api:http://api.rubyonrails.com/