Ruby on rails Rails 3.0模型在两个不同的db';视图中不存在导致错误的表

Ruby on rails Rails 3.0模型在两个不同的db';视图中不存在导致错误的表,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,在我的Rails 3.0应用程序中,我有两个模型:概念和类别。概念有一个映射到类别的category_id字段。出于各种原因,这些模型必须存储在两个不同的数据库中,这两个数据库都不同于我的主应用程序数据库: class Concept < ActiveRecord::Base establish_connection configurations[Rails.env]["db1"] set_table_name "concepts" end class Category <

在我的Rails 3.0应用程序中,我有两个模型:概念和类别。概念有一个映射到类别的category_id字段。出于各种原因,这些模型必须存储在两个不同的数据库中,这两个数据库都不同于我的主应用程序数据库:

class Concept < ActiveRecord::Base
  establish_connection configurations[Rails.env]["db1"]
  set_table_name "concepts"
end

class Category < ActiveRecord::Base
  establish_connection configurations[Rails.env]["db2"]
  set_table_name "categories"
end
在另一个rails控制台中,这项工作没有任何问题。但是,如果我尝试在“概念展示”页面上执行@concept.category,则会出现以下错误:

Table 'myapp_development.categories' doesn't exist

你知道是什么引起的吗?

有趣的问题。以前从没试过

如果模型名是tabel name的单数,您不需要设置表名,就像您的一样

如果像通常一样在database.yml中设置数据库连接,请传递连接名称,如下所示

您确实忘记了添加关联do,这就是为什么会出现异常

刚刚用以下方法进行了测试:

# config/database.yml
db1:
  adapter: mysql2
  database: db1
  username: username
  password: password

db2:
  adapter: mysql2
  database: db2
  username: some_other_username
  password: some_other_password

# models/concept.rb
class Concept < ActiveRecord::Base
  establish_connection :db1
  belongs_to :category
end

# models/category.rb
class Category < ActiveRecord::Base
  establish_connection :db2
  has_one :concept
end
#config/database.yml
db1:
适配器:mysql2
数据库:db1
用户名:username
密码:密码
db2:
适配器:mysql2
数据库:db2
用户名:其他用户名
密码:某些密码
#models/concept.rb
类概念

它的行为就像是一个单一的数据库。

感谢您的回复。在我的database.yml文件中,我将所有数据库嵌套在一个开发名称空间中。我不知道为什么这在console中不是问题,但在我看来似乎影响了一些事情。像在yaml文件中那样将它们分别移出就可以了。
# config/database.yml
db1:
  adapter: mysql2
  database: db1
  username: username
  password: password

db2:
  adapter: mysql2
  database: db2
  username: some_other_username
  password: some_other_password

# models/concept.rb
class Concept < ActiveRecord::Base
  establish_connection :db1
  belongs_to :category
end

# models/category.rb
class Category < ActiveRecord::Base
  establish_connection :db2
  has_one :concept
end