【发布时间】:2015-02-12 18:34:48
【问题描述】:
我在 Rails 4 应用程序中实现多个数据库连接时遇到了麻烦。除了主数据库连接,我还通过在 database.yml 中指定详细信息创建了辅助连接。
secondary_base:
adapter: postgresql
encoding: unicode
host: localhost
database: secondary_db
pool: 5
username: postgres
password: postgres
然后创建了一个名为SecondaryBase 的模型,它保存与该辅助数据库的连接。代码如下:
secondary_base.rb
class SecondaryBase < ActiveRecord::Base
self.abstract_class = true
establish_connection "secondary_base"
end
然后添加了两个模型Member和Subdomain。
member.rb
class Member < SecondaryBase
has_and_belongs_to_many :subdomains
end
subdomain.rb
class Subdomain < SecondaryBase
has_and_belongs_to_many :members
end
现在您可以看到Member 和Subdomain 模型通过has_and_belongs_to_many 关系相关联。因此,当我尝试将数据插入名为members_subdomains 的连接表时,它现在正在工作并给我类似PG: Undefined table 的错误,尽管该表在secondary_db 数据库中退出。我的理解是rails试图在主数据库中找到members_subdomains表。但是当我在Rails 3.2.13中尝试相同的代码时,完全没有问题,一切都很好。你们中有人处理过类似的问题吗?请帮忙。
【问题讨论】:
-
afact,这似乎是 Rails 4.1 中的一个重大变化。我刚刚在这种情况下升级了一个应用程序并遇到了同样的问题。你知道rails github上有什么问题吗?
-
@MikeCampbell 当时我在 github 或其他网站上没有找到任何有用的资源。
-
好的,谢谢你告诉我:)
标签: ruby-on-rails database ruby-on-rails-3 postgresql ruby-on-rails-4