Rails:从位于单独数据库中的has_one关联中获取信息

问题描述 投票:0回答:1

我有两个关联的模型存储在同一服务器上的单独数据库中的问题。

假设我有两个模型,城市和运动队。我希望能够找到属于nfl球队的所有运动队,然后获取其相关城市。由于它们位于单独的数据库中,因此尝试执行此操作遇到了很多麻烦。

class City
    eastablish_connection :city_db
    has_one :sports_team
end

class SportsTeam
    belongs_to :city
    validates :is_nfl_team, :is_mlb_team, :is_nhl_team, presence: true
end
ruby-on-rails ruby ruby-on-rails-5
1个回答
0
投票

在Rails 5中是可能的,但是我建议您将应用程序升级到Rails 6,因为您正在使用多个数据库,并且Rails 6本身支持此功能。

在Rails 5

  1. 您可以在second_database.yml文件夹中定义另一个数据库配置文件,例如config,然后将其加载到这样的初始化程序中:SECOND_DATABASE = YAML::load(ERB.new(File.read(Rails.root.join('config','second_database.yml'))).result)[Rails.env]

  2. 然后在模型内部(其记录在第二个数据库中)包括此:establish_connection SECOND_DATABASE

请记住,我在Rails 5中使用过多个数据库,您可能会遇到问题,但是您尝试做的事情完全是可行的。

在Rails 6

一个更好的选择是升级到Rails 6并使用其多数据库功能,基本上,您要做的是:

  1. database.yml内定义两个数据库的连接。
  2. 根据型号的数据在模型上添加connect_to(:database_one)connect_to(:database_two)等。

更多详细信息,请访问https://guides.rubyonrails.org/active_record_multiple_databases.html

© www.soinside.com 2019 - 2024. All rights reserved.