Rails:从现有表创建模型?

Der*_*rek 10 activerecord ruby-on-rails ruby-on-rails-4

我已经从不同的项目创建了表.它们的名称格式为aaa_bbb_ccc_ddd(全部为非复数,部分部分不是常规字).通过阅读本文,我已成功从数据库中创建了一个模式.但现在我必须制作实际模型.我看过RMRE,但他们在我的表上强制执行A​​ctiveRecord约定并更改其名称,我不想这样做,因为其他应用程序依赖于这些表.

从现有表自动创建模型和模式的最佳方法是什么?

rma*_*002 19

只是一个理论,不知道这将如何在真正的应用程序中工作:

创建models命名为ActiveRecord约定需要,例如对于表,aaa_bbb_ccc_ddd您将创建一个模型AaaBbb并将此模型映射到您的表:

class AaaBbb < ActiveRecord::Base
    self.table_name = "aaa_bbb_ccc_ddd"
end
Run Code Online (Sandbox Code Playgroud)

或者更人性化的例子:

class AdminUser < ActiveRecord::Base
    self.table_name = "my_wonderfull_admin_users"
end
Run Code Online (Sandbox Code Playgroud)

现在你将拥有AaaBbb路线中的资源,这意味着你将拥有一个像以下网址:

 .../aaa_bbb/...
Run Code Online (Sandbox Code Playgroud)

如果你想在url中使用表名称,我猜你可以重写路由:

get 'aaa_bbb_ccc_ddd/:id', "aaa_bbb#show", as: "aaa_bbb"

再次,只是一个可能帮助你的理论.我还没有处理过这种情况,但是会从这开始.


编辑

自动模式从数据库生成:

https://github.com/bosko/rmre

但我认为这将创建具有奇怪名称的rails约会模型,您必须将其用作应用程序中的资源.


如果您想使用与表名不同的模型名称,我在SO上找到的一个好模板:

class YourIdealModelName < ActiveRecord::Base
  self.table_name = 'actual_table_name'
  self.primary_key = 'ID'

  belongs_to :other_ideal_model, 
    :foreign_key => 'foreign_key_on_other_table'

  has_many :some_other_ideal_models, 
    :foreign_key => 'foreign_key_on_this_table', 
    :primary_key => 'primary_key_on_other_table'
end
Run Code Online (Sandbox Code Playgroud)