ruby-on-rails - rails : Creating models from existing tables?

标签 ruby-on-rails activerecord ruby-on-rails-4

我已经从不同的项目创建了表。他们的名字的格式类似于 aaa_bbb_ccc_ddd(所有非复数和某些部分不是约定词)。我通过阅读 this 从数据库成功创建了一个架构.但现在我必须制作实际模型。我看过 RMRE ,但他们在我的表上强制执行 ActiveRecord 约定并更改它们的名称,我不想这样做,因为其他应用程序依赖于这些表。

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

最佳答案

只是一个 理论 ,不确定这在实际应用中如何工作:

创建 models命名为 ActiveRecord约定要求,例如表 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作为路由中的资源意味着您将拥有一个如下网址:
 .../aaa_bbb/...

如果你想在 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

关于ruby-on-rails - rails : Creating models from existing tables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18196912/

相关文章:

mysql - 为什么是语法错误?

ruby-on-rails - 编辑链接不适用于编辑 ruby​​ on rails 博客中的评论

ruby-on-rails - 为什么 Neoid 依赖关系数据库?如何在RoR中使用neo4j?

ruby-on-rails - 使用 Coffeescript 更新 Stripe 信用卡

ruby-on-rails - 在 ruby​​ on rails 4 中,如何在 forms_for 助手中设置一个与模型无关的属性?

javascript - Rails 4 应用程序一页上的多个 Stripe 支付按钮

ruby-on-rails - Requirejs-rails 阻止升级到 rails 4

javascript - 使用 JavaScript 脚本作为函数来更新资源参数?

ruby-on-rails - 获取 ActiveRecord 对象中的属性类型

ruby-on-rails - rails : eager-loading on an already-left-joined table?