0

我正在尝试使用establish_connection. 我在迁移文件中有这样的东西:

def change
  ActiveRecord::Base.establish_connection("user_#{Rails.env}")
  ActiveRecord::Base.initialize_schema_migrations_table

  create_table "users", :force => true do |t|
    t.string   "email",  
end

在 yml 我有这个配置:

user_development:
  adapter: postgresql
  encoding: unicode
  database: MyApp_user_development
  pool: 5
  host: localhost
  username: xxx
  password: xxx

我还定义了这样的用户模型:

class User < ActiveRecord::Base
  establish_connection "user_#{Rails.env}"
  [...]
end

现在,数据库存在,但运行时rake db:migrate出现此错误:

==  CreateUserOnSeparateDb: migrating =========================================
rake aborted!
An error has occurred, this and all later migrations canceled:

connection is closed

你们中有人知道发生了什么吗?

我还尝试将establish_connection调用移动到connection迁移文件中的方法中。在这种情况下,表是在迁移时创建的,但是我得到了同样的错误(所以在其他迁移中以某种方式失败)并且顺便说一下它没有创建 schema_migrations 表......

有什么帮助吗?

4

1 回答 1

1


按照以下步骤解决了上述问题。

类 AddCustomTbl < ActiveRecord::Migration
默认连接 ActiveRecord::Base.establish_connection(Rails.env).connection 结尾 向上定义 # 与用户的连接_#{Rails.env} oldEnv = Rails.env Rails.env = "user_#{Rails.env}" ActiveRecord::Base.establish_connection(Rails.env) create_table "users", :force => true do |t| t.string "电子邮件" 结尾 # 与 Rails.env 的连接 Rails.env = oldEnv ActiveRecord::Base.establish_connection ActiveRecord::Base.configurations[Rails.env] 结尾 向下定义 # 与用户的连接_#{Rails.env} oldEnv = Rails.env Rails.env = "user_#{Rails.env}" ActiveRecord::Base.establish_connection(Rails.env).connection drop_table :用户 # 与 Rails.env 的连接 Rails.env = oldEnv ActiveRecord::Base.establish_connection ActiveRecord::Base.configurations[Rails.env] 结尾 结尾
于 2013-07-02T08:41:04.327 回答