Ruby on rails rails 4中的多数据库连接

Ruby on rails rails 4中的多数据库连接,ruby-on-rails,database,ruby-on-rails-3,postgresql,ruby-on-rails-4,Ruby On Rails,Database,Ruby On Rails 3,Postgresql,Ruby On Rails 4,在Rails 4应用程序中实现多个数据库连接时,我遇到了一个问题。除了主数据库连接之外,我还通过在database.yml中指定详细信息创建了辅助连接 secondary_base: adapter: postgresql encoding: unicode host: localhost database: secondary_db pool: 5 username: postgres password: postgres 然后创建了一个名为SecondaryBase的模型,该

在Rails 4应用程序中实现多个数据库连接时,我遇到了一个问题。除了主数据库连接之外,我还通过在
database.yml
中指定详细信息创建了辅助连接

secondary_base:
 adapter: postgresql
 encoding: unicode
 host: localhost
 database: secondary_db
 pool: 5
 username: postgres
 password: postgres
然后创建了一个名为
SecondaryBase
的模型,该模型保持与该辅助数据库的连接。代码如下:

次级基础.rb

class SecondaryBase < ActiveRecord::Base
  self.abstract_class = true
  establish_connection "secondary_base"
end
class Member < SecondaryBase
  has_and_belongs_to_many :subdomains
end
class Subdomain < SecondaryBase
  has_and_belongs_to_many :members
end
子域.rb

class SecondaryBase < ActiveRecord::Base
  self.abstract_class = true
  establish_connection "secondary_base"
end
class Member < SecondaryBase
  has_and_belongs_to_many :subdomains
end
class Subdomain < SecondaryBase
  has_and_belongs_to_many :members
end
类子域

现在您可以看到,
成员
子域
模型通过
has\u和\u属于\u多个
关系进行关联。因此,当我试图向名为
members\u subdomains
的联接表插入数据时,它现在起作用,并给出类似
PG:Undefined table
的错误,尽管该表存在于
secondary\u db
数据库中。据我所知,rails正在尝试在主数据库中查找
members\u子域
表。但当我在rails 3.2.13中尝试相同的代码时,根本没有问题,一切都很好。你们中有人曾经处理过类似的问题吗?请提供帮助。

我相信您需要从
has\u和\u归属\u many
切换到
has\u many:through
,才能使此功能正常工作。为了做到这一点,只需为联接表创建一个模型——我将其称为“MemberSubdomain”

class SecondaryBase < ActiveRecord::Base
  self.abstract_class = true
  establish_connection "secondary_base"
end

class MemberSubdomain < SecondaryBase
  self.table_name = 'members_subdomains'
end

class Member < SecondaryBase
  has_many :member_subdomains
  has_many :subdomains, :through => :member_subdomains, :source => :subdomain
end

class Subdomain < SecondaryBase
  has_many :member_subdomains
  has_many :members, :through => :member_subdomains, :source => :member
end
class SecondaryBase:成员\子域,:源=>:子域
结束
类子域:member\u子域,:source=>:member
结束

那么
的实际问题是什么呢?它与模型没有关联,因此无法告诉它要连接到哪个数据库。afaict,这似乎是Rails 4.1中一个突破性的变化。我刚刚用这个场景升级了一个应用程序,遇到了同样的问题。你知道rails github有什么问题吗?@MikeCampbell当时我在github或其他网站上没有找到任何有用的资源。好的,谢谢你让我知道:)