如何在Rails 3中使用现有的Postgres表

时间:2012-02-24 03:47:56

标签: ruby-on-rails postgresql migration

我对Rails完全不熟悉,但我已经做了很多搜索,没有成功解决这个问题。这看起来很简单。

我正在使用Netbeans,如果这有所不同。

我有一个名为 diagnostics 的Postgres数据库 其中有一个名为 diagnostics_data 的表。它充满了数据。相当多的,它由另一个应用程序生成并每天更新。有几百列会不时变化。我的rails应用程序将简单地获取该数据,并将其绘制在动态Web环境中。我在Rails中制作的示例数据库中找到了绘图例程,但我不知道如何让Rails使用现有的表。

我创建了一个新的应用程序,并更新了schema.rb,使用它看起来像:

ActiveRecord::Schema.define(:version => 20120224014811) do
create_table "diagnostics_data", :force => true do |t|
t.string "orbit_number",                                  :limit => nil
t.string "netcdf_location",                               :limit => 300

这似乎表明我已成功连接到正确的数据库。我甚至为Diagnostics_Data生成了模型和迁移,但是......

>>ActiveRecord::Base.connection.tables
>>   []

什么都不产生。 我确实有一个生成的模型

class DiagnosticsData < ActiveRecord::Base
end

但我无法连接到实际的表格

>>d=DiagnosticsData.first
>>   ActiveRecord::StatementInvalid: Could not find table 'diagnostics_data'

所以,即使我必须从头开始,我如何让rails连接到现有的表,具体来说,我想在一个简单的脚手架中使用它,所以我可以删除我的示例代码以使用从我的桌子模型与一些很酷的视图和控制器。

1 个答案:

答案 0 :(得分:5)

因此,在编辑database.yml文件后使用rails和现有数据库时,您不需要在模式文件中进行清理。

只需打开您的模型文件并执行类似的操作

class Mammals < ActiveRecord::Base
  set_table_name "tbl_Squirrels"
  set_primary_key :squirrel_id
end

如果要按照在示例代码中编写的方式引用它们,也可以在此处指定所有列名称。

除非另有说明,否则这里有一些魔法,除了指定之外,“Id”之类的名称会自动成为主键。以及“tablename_id”将是tablename的外键。