gpt4 book ai didi

ruby-on-rails - 当连接到多个数据库时,Rails 从其他请求返回结果。

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

在运行 nginx 和 unicorn 的服务器上,我将 rails 配置为连接到两个不同的数据库。即使在轻负载下,对访问第二个 Rails 数据库的端点的 Web 请求也会从其他请求返回结果。

例如,如果同时调用 http://example.com/user/111/addresshttp://example.com/user/222/address,有时两次调用都会返回用户 222 的地址,有时两次调用都会返回用户 111 的地址。

地址的 enpoint 非常基础。

class UserController < ApplicationController
before_filter :load_user

def address
address = @user.address
render json: address, status: 200
end

private

def load_user
@user = User.find params[:id]
end
end

模型 UserAddress 都访问第二个数据库并继承自连接到该数据库的基类:

class OtherDbActiveRecord < ActiveRecord::Base
self.abstract_class = true
establish_connection "#{Rails.env}_other_db"
# Prevent creation of new records and modification to existing records
def readonly?
return true
end

# Prevent objects from being destroyed
def before_destroy
raise ActiveRecord::ReadOnlyRecord
end
end

class User < OtherDbActiveRecord
has_one :address
end

class Address < OtherDbActiveRecord
belongs_to :user
end

是否有连接到我缺少的第二个数据库的步骤?什么会导致 ActiveRecord 返回不同查询的结果?

最佳答案

OtherDbActiveRecord 是单个对象。每个 ruby​​ 类都是一个对象,并且是一个单独的对象。当您调用 establish_connection 时,它将那个(一个)对象的状态设置为给定的连接。

尝试使用不同类名的重复类。

class User < ActiveRecord::Base
end

class UserOther < OtherDbActiveRecord
end

class Address < ActiveRecord::Base
end

class Address Other < OtherDbActiveRecord
end

关于ruby-on-rails - 当连接到多个数据库时,Rails 从其他请求返回结果。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12467809/

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