gpt4 book ai didi

ruby-on-rails - 在rails项目中使用两个或多个数据库

转载 作者:数据小太阳 更新时间:2023-10-29 08:55:16 25 4
gpt4 key购买 nike

我正在为不同的项目使用外部用户数据库。

现在我的项目中有了 School 模型,它有_many users 和 users has many schools。

class User < ActiveRecord::Base
establish_connection "#{RAILS_ENV}_tunnel"
has_many :memberships
has_many :schools, :through => :memberships
end

class School < ActiveRecord::Base
has_many :memberships
has_many :users, :through => :memberships
end

class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :school
end

那么我现在遇到的问题是:

  • 我不能调用 school.users(因为成员表在我的 PROJECT 数据库中,而不是在外部 USERS 数据库中),但我可以调用 user.schools
  • 我不能以这种方式更新:current_user.school.find(params[:id]).update_attributes(params[:school]),因为它以这种方式打开只读连接。

我知道如何解决这个问题,即

school.users 我可以这样调用:

class School < ActiveRecord::Base
has_many :memberships
# has_many :users, :through => :memberships

def users
User.where("users.id in (?)", self.connections.map(&:user_id))
end
end

但是这种技巧还不够。因为现在我无法添加像 school.users << User.find(203) 这样的用户, 或 school.users.find(params[:user_id])和其他功能,has_many 关系给我。

所以问题是如何操作两个通过多对多关系相互连接并具有完整功能支持的数据库。

最佳答案

我认为在 Rails 中没有一种方法可以在提供完整功能支持的情况下执行此操作 - 我认为您最好尝试使用类似 MySQL's federated tables 的方法将远程数据库表带入您的生产数据库。

关于ruby-on-rails - 在rails项目中使用两个或多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3036907/

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