如何修改RubyOnRails中ActiveRecord默认的表格名和外键字段映射关系?
??????? 最近在看ROR的東西,并試著實(shí)踐了一下。
??????? 在看完了ROR那個(gè)誘人的demo短片和Eiffel Qiu的rubyonrails.pdf后,我在佩服ror的快捷之余,有兩個(gè)疑問(wèn):
1. 如何在ror無(wú)法自動(dòng)找到model和數(shù)據(jù)庫(kù)表格對(duì)應(yīng)關(guān)系的時(shí)候定義后,如何自定義表格和model ActiveRecord class的對(duì)應(yīng)關(guān)系?
2. 演示中在class book中添加了“belongs_to :category”后,自動(dòng)建立了books中的column category_id和categories表的id的外鍵對(duì)應(yīng),如果我們不想要用category_id作為字段名的時(shí)候如何設(shè)置對(duì)應(yīng)關(guān)系?
??????? 五一有空實(shí)踐了一下,這兩個(gè)問(wèn)題可以這樣解決:
??????? 1. 定義了一個(gè)model之后,rails會(huì)自動(dòng)嘗試著去找到該ActiveRecord class對(duì)應(yīng)的復(fù)數(shù)形式數(shù)據(jù)庫(kù)表格,并建立相應(yīng)的屬性。例如如果class名是person的話,rails會(huì)自動(dòng)找到名為people的表格(如果有的話)。
??????? 這對(duì)于表格名是一些常用詞匯的情況是比較方便,但是對(duì)于一些簡(jiǎn)寫(xiě)的數(shù)據(jù)庫(kù)表名或者一些帶有明顯中文色彩的表名(例如gd_novel,gd-廣東)等,rails是無(wú)能為力的,無(wú)法幫你找到。
??????? 這個(gè)時(shí)候,使用set_table_name進(jìn)行指定:? class Mouse < ActiveRecord::Base
???? set_table_name "mice"#這里定義指定的表格名
? end
??????? 2. 在ror的api幫助中找到關(guān)于belongs_to的幫助,發(fā)現(xiàn)要進(jìn)行自定義外鍵字段名可以這樣定義:
class Book < ActiveRecord::Base??? belongs_to(:Category,:class_name => 'Category', :foreign_key=>'cat_id' )
????#????????????????? ^屬性名???????????????????????????????????? ^屬性的實(shí)現(xiàn)類名??????????????? ^對(duì)應(yīng)categories ID字段的外鍵
end
??????? 這樣books表可以這樣定義:Books(id integer, title varchar(100)...cat_id integer...)。
??????? 對(duì)于ActiveRecord的其他關(guān)系定義函數(shù):has_and_belongs_to_many、has_many、has_one等都是通過(guò)foreign_key定義外鍵字段名。
〔附〕:ruby on rails api:http://api.rubyonrails.com/
總結(jié)
以上是生活随笔為你收集整理的如何修改RubyOnRails中ActiveRecord默认的表格名和外键字段映射关系?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 求大佬帮帮忙 ubuntu 安装完成
- 下一篇: 数据结构1800题-错题集-第二章