我有两个关联的模型存储在同一服务器上的单独数据库中的问题。
假设我有两个模型,城市和运动队。我希望能够找到属于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
在Rails 5中是可能的,但是我建议您将应用程序升级到Rails 6,因为您正在使用多个数据库,并且Rails 6本身支持此功能。
在Rails 5
您可以在second_database.yml
文件夹中定义另一个数据库配置文件,例如config
,然后将其加载到这样的初始化程序中:SECOND_DATABASE = YAML::load(ERB.new(File.read(Rails.root.join('config','second_database.yml'))).result)[Rails.env]
然后在模型内部(其记录在第二个数据库中)包括此:establish_connection SECOND_DATABASE
请记住,我在Rails 5中使用过多个数据库,您可能会遇到问题,但是您尝试做的事情完全是可行的。
在Rails 6
一个更好的选择是升级到Rails 6并使用其多数据库功能,基本上,您要做的是:
database.yml
内定义两个数据库的连接。connect_to(:database_one)
,connect_to(:database_two)
等。更多详细信息,请访问https://guides.rubyonrails.org/active_record_multiple_databases.html