0

我无法在我的 RoR 应用程序中为我的 sql server 数据库中的预先存在的表创建模型。

在 ruby​​ 控制台中,当我键入: 时ActiveRecord::Base.connection.tables,将返回以下内容:["Bank"、"Owner"、"Location"、"Zone"]。

以上内容在应用程序中未创建任何模型或迁移的情况下返回。所以下一步是创建一个模型......

rails g model Bank

并编辑模型:

class Bank < ActiveRecord::Base
    set_table_name = "Bank"
    set_primary_key "BankID"
end

并编辑迁移:

class CreateBanks < ActiveRecord::Migration
  def change
    create_table "Master.Bank" do |t| // Because Bank is in the 'Master' schema, not the default 'dbo'

      t.timestamps
    end
  end
end

我从自己的研究中了解到的对模型和迁移文件的编辑应该允许我成功地将我的应用程序中的模型链接到旧数据库,其表名与 Rails 的约定和适当的模式不匹配。

但是,在执行完所有这些操作后,该命令rake db:migrate会生成错误“TinyTds::Error: 数据库中已经有一个名为‘Bank’的对象。”

我究竟做错了什么?

4

1 回答 1

0

当您从遗留数据库创建时,您不知道迁移,因为表已经存在。Rails应该自省表并生成正确的字段。只需确保您访问数据库的用户的默认架构是拥有表的架构。

于 2013-10-23T15:51:56.067 回答