gpt4 book ai didi

ruby-on-rails - rails 4 中的多个数据库连接

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:00 26 4
gpt4 key购买 nike

我在 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

然后添加了两个模型MemberSubdomain

成员(member).rb

class Member < SecondaryBase
has_and_belongs_to_many :subdomains
end

subdomain.rb

class Subdomain < SecondaryBase
has_and_belongs_to_many :members
end

现在您可以看到,MemberSubdomain 模型通过has_and_belongs_to_many 关系相关。因此,当我尝试将数据插入名为 members_subdomains 的连接表时,它现在正在工作并给我类似 PG: Undefined table 的错误,尽管该表存在在 secondary_db 数据库中。据我所知,rails 试图在主数据库中找到 members_subdomains 表。但是当我在 Rails 3.2.13 中尝试相同的代码时,完全没有问题,一切都很好。你们中有人处理过类似的问题吗?请帮忙。

最佳答案

我相信您需要从 has_and_belongs_to_many 切换到 has_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

关于ruby-on-rails - rails 4 中的多个数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28485137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com