Der*_*rek 10 activerecord ruby-on-rails ruby-on-rails-4
我已经从不同的项目创建了表.它们的名称格式为aaa_bbb_ccc_ddd(全部为非复数,部分部分不是常规字).通过阅读本文,我已成功从数据库中创建了一个模式.但现在我必须制作实际模型.我看过RMRE,但他们在我的表上强制执行ActiveRecord约定并更改其名称,我不想这样做,因为其他应用程序依赖于这些表.
从现有表自动创建模型和模式的最佳方法是什么?
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"
再次,只是一个可能帮助你的理论.我还没有处理过这种情况,但是会从这开始.
编辑
以自动模式从数据库生成:
但我认为这将创建具有奇怪名称的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)
| 归档时间: |
|
| 查看次数: |
15520 次 |
| 最近记录: |