ruby-on-rails Rails:从现有表创建模型?

ncecgwcz  于 2022-11-26  发布在  Ruby
关注(0)|答案(2)|浏览(226)

我已经从其他项目创建了表。它们的名称格式类似于aaa_bbb_ccc_ddd我已经通过阅读this成功地从数据库创建了一个模式。但是现在我必须创建实际的模型。我已经查看了RMRE,但是它们对我的表强制执行ActiveRecord约定并更改了它们的名称。我不想这样做,因为其他应用程序依赖于这些表。
从现有表自动创建模型和架构的最佳方法是什么?

7gcisfzg

7gcisfzg1#

只是一个理论,不确定在真实的应用中如何工作:
创建命名为ActiveRecordmodels约定要求,例如对于表aaa_bbb_ccc_ddd,您将创建一个模型AaaBbb,并将该模型Map到您的表:

class AaaBbb < ActiveRecord::Base
    self.table_name = "aaa_bbb_ccc_ddd"
end

或者一个更人性化的例子:

class AdminUser < ActiveRecord::Base
    self.table_name = "my_wonderfull_admin_users"
end

现在,您将使用AaaBbb作为路由中的资源,这意味着您将使用如下URL:

.../aaa_bbb/...

如果你想在url中使用表名name,我想你可以重写路由:
get 'aaa_bbb_ccc_ddd/:id', "aaa_bbb#show", as: "aaa_bbb"
再说一次,只是一个理论,可能会帮助你。我还没有处理过这样的案件,但会从这个开始。

编辑

从数据库自动创建模型:
https://github.com/bosko/rmre
但我认为这将按照Rails约定创建具有wierd名称的模型,您必须将其用作应用程序中的资源。
我在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
suzh9iv8

suzh9iv82#

只要从Rails切换到Django,让你的生活更快乐,也让你的工作正常:

$ python manage.py inspectdb my_table_without_existing_model > some_new_model.py

够了。两秒钟的工作:)

相关问题