将导轨连接到现有的postgres DB - 控制台和控制器看不到的模型

时间:2012-02-15 17:14:48

标签: ruby-on-rails ruby activerecord

我有一个包含多个表的数据库,每个表包含可能不符合rails命名约定的列 是否存在从这些表创建ActiveRecord模型的工具,或者我是否需要逐个执行此操作?

如果我手动为一个表创建ActiveRecord模型,这会没问题吗? (顶部不需要隐藏的数据库标识符?)

更新

我已经尝试过magicmodels但是不能让它工作(自上次修改以来已经有一段时间了)并且似乎与rails 3.2不兼容

我当时尝试了什么:

- change the database.yml so it points towards my existing Postresql database
- manually create my models such as:

    # app/models/user.rb
    class User < ActiveRecord::Base
    end

- run the console and tried
    User.all

=> I end up with an error saying that contant User was not initialized.  
Doesn't the console import the model automatically ? Or is that linked to the fact the configuration I did is not correct ?

2 个答案:

答案 0 :(得分:2)

http://magicmodels.rubyforge.org/magic_model_generator/可能就是你要找的东西。我没有听说过许多提供此功能的工具,因为许多rails应用程序是从头开始设计的,而不是给定一个遗留数据库,然后从中创建模型。

您可以轻松地手动创建模型并将它们映射到几乎任何数据库表。模型有一个“set_table_name'name'”,它允许您将单个模型映射的rails默认约定覆盖到复数db表名。

答案 1 :(得分:1)

ActiveRecord可以与旧数据库一起使用。我做了一个没有使用Rails和ActiveRecord作为我的ORM的后端系统。 “ActiveRecord Without Rails”让我开始了。 “Using ActiveRecord outside Rails”也很有用。在Google上搜索“使用active railsord without rails”,你会发现更多。

您不需要完全充​​实的模型。只需为所需的表使用基类,ActiveRecord将在数据库中查询所需的内容。它不会知道表关系,但对于一般查询它会做得很好。随时建立关系并需要它们。