Rails:从现有表创建模型?
我已经从一个不同的项目创建了表。 它们的名称格式为aaa_bbb_ccc_ddd(全部为非复数,部分部分不是常规字)。 通过阅读本文,我已经从数据库中成功创建了一个模式。 但现在我必须制作实际模型。 我看过RMRE ,但他们在我的表上强制执行ActiveRecord约定并更改其名称,我不想这样做,因为其他应用依赖于这些表。
从现有表自动创建模型和模式的最佳方法是什么?
只是一个理论 ,不知道这将如何在真正的应用程序中工作:
创建名为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中使用表名称,我想你可以重写路由:
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
替代解决方案: https : //github.com/wnameless/rare_map
它不会强制您更改现有表的任何内容。