如何修改RubyOnRails中ActiveRecord默认的表格名和外键字段映射关系?
??????? 最近在看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/
總結
以上是生活随笔為你收集整理的如何修改RubyOnRails中ActiveRecord默认的表格名和外键字段映射关系?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求大佬帮帮忙 ubuntu 安装完成
- 下一篇: 数据结构1800题-错题集-第二章