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

zac*_*618 1 migration postgresql ruby-on-rails

我是Rails的新手,但我已经做了很多搜索,没有成功解决这个问题.这看起来很简单.

我正在使用Netbeans,如果这有所作为.

我有一个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
Run Code Online (Sandbox Code Playgroud)

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

>>ActiveRecord::Base.connection.tables
>>   []
Run Code Online (Sandbox Code Playgroud)

没收益.我确实有一个生成的模型

class DiagnosticsData < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)

但我无法连接到实际的表

>>d=DiagnosticsData.first
>>   ActiveRecord::StatementInvalid: Could not find table 'diagnostics_data'
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

只需打开模型文件并执行此类操作即可

class Mammals < ActiveRecord::Base
  set_table_name "tbl_Squirrels"
  set_primary_key :squirrel_id
end
Run Code Online (Sandbox Code Playgroud)

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

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