Generate Model from Existing Table?

[cc lang=”ruby”]
class Person < ActiveRecord::Base set_table_name 'person' end [/cc] 如果你的rails專案是一個從別的UI準備要換皮換成Rails的,則原來己存在的資料表可以依以上的指令讓這個model用set_table_name去存取。 另外如果不想新增一個Model而又給你新增一個migrate檔,則可以用 [cc lang="ruby"] rails g model model_name --skip-migration [/cc] 來跳過產生migrate檔。 ref: 更改表格名: http://apidock.com/rails/ActiveRecord/Base/set_table_name/class
更改欄位名:
http://apidock.com/rails/Module/alias_attribute

http://stackoverflow.com/questions/4119659/rails-3how-to-generate-models-for-existing-database-tables

http://stackoverflow.com/questions/1986301/rails-generate-model-from-existing-table

另外, model class 都是以單數命名 (Ticket)

update
如果你在log遇到這個警告:
DEPRECATION WARNING: Calling set_table_name is deprecated. Please use `self.table_name = ‘the_name’` instead

表示在未來 Rails 下個新版本將不支援 set_table_name 這個方法,請這樣用:
[cc lang=”ruby”]
class Person < ActiveRecord::Base self.table_name = 'person' end [/cc]

Rails 另外命名資料表名稱的方法

若要在 Ruby on Rails 在己存在的資料庫上重新建立 UI ,並且原資料結構與資料都必需保留。但MySQL對於資料欄位名稱的大小寫非常的敏感。

因此若在Rails上命名model之後:

rails即報錯,資訊如下:

[cc lang=”ruby”]
irb(main):006:0> Tickets.first
Mysql2::Error: Table ‘rt3.tickets’ doesn’t exist: SHOW FIELDS FROM `tickets`
ActiveRecord::StatementInvalid: Mysql2::Error: Table ‘rt3.tickets’ doesn’t exist: SHOW FIELDS FROM `tickets`
[/cc]

Rails指出的錯誤是因為 tickets 字首變小寫了,所以MySQL就找不到資料表。

那麼,若以後要改寫UI不就很沒有彈性?

是的,我找不到那個方法前是非常的躁鬱的 ★゜+.ヽ(*。>Д<)o゜+.゜☆ 好佳在有前輩可以指引光明,因此前輩指出了一個方法,那就是: [cc lang="ruby"]set_table_name[/cc] 然後在這個地方放進這個方法: [cc lang="ruby"] class Tickets < ActiveRecord::Base set_table_name "Tickets" end [/cc] 結果: [cc lang="ruby"] Loading development environment (Rails 3.1.0) irb(main):001:0> Tickets.count
(2.8ms) SELECT COUNT(*) FROM `Tickets`
=> 8035
[/cc]

Rails的世界因此變的美好了 〜♡ヽ(●´ε`●)ノ♡

相關連結:
http://apidock.com/rails/ActiveRecord/Base/set_table_name/class

http://apidock.com/rails/Module/alias_attribute