我已经从其他项目创建了表。它们的名称格式类似于aaa_bbb_ccc_ddd我已经通过阅读this成功地从数据库创建了一个模式。但是现在我必须创建实际的模型。我已经查看了RMRE,但是它们对我的表强制执行ActiveRecord约定并更改了它们的名称。我不想这样做,因为其他应用程序依赖于这些表。从现有表自动创建模型和架构的最佳方法是什么?
7gcisfzg1#
只是一个理论,不确定在真实的应用中如何工作:创建命名为ActiveRecordmodels约定要求,例如对于表aaa_bbb_ccc_ddd,您将创建一个模型AaaBbb,并将该模型Map到您的表:
ActiveRecord
models
aaa_bbb_ccc_ddd
AaaBbb
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"再说一次,只是一个理论,可能会帮助你。我还没有处理过这样的案件,但会从这个开始。
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
suzh9iv82#
只要从Rails切换到Django,让你的生活更快乐,也让你的工作正常:
$ python manage.py inspectdb my_table_without_existing_model > some_new_model.py
够了。两秒钟的工作:)
2条答案
按热度按时间7gcisfzg1#
只是一个理论,不确定在真实的应用中如何工作:
创建命名为
ActiveRecord
models
约定要求,例如对于表aaa_bbb_ccc_ddd
,您将创建一个模型AaaBbb
,并将该模型Map到您的表:或者一个更人性化的例子:
现在,您将使用
AaaBbb
作为路由中的资源,这意味着您将使用如下URL:如果你想在url中使用表名name,我想你可以重写路由:
get 'aaa_bbb_ccc_ddd/:id', "aaa_bbb#show", as: "aaa_bbb"
再说一次,只是一个理论,可能会帮助你。我还没有处理过这样的案件,但会从这个开始。
编辑
从数据库自动创建模型:
https://github.com/bosko/rmre
但我认为这将按照Rails约定创建具有wierd名称的模型,您必须将其用作应用程序中的资源。
我在SO上找到了一个很好的模板,如果你想使用一个不同于表名的模型名:
suzh9iv82#
只要从Rails切换到Django,让你的生活更快乐,也让你的工作正常:
够了。两秒钟的工作:)