ActiveRecord::ConnectionNotEstablished(未找到 'primary' 的连接池。)渲染结果时
ActiveRecord::ConnectionNotEstablished (No connection pool with 'primary' found.) when rendering results
我正在 API rails 6.0 上工作。应用程序中的某些模型连接到第二个数据库,这是 database.yml 中的设置:
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 50 } %>
test:
primary:
<<: *default
database: tr_util_test
trmain:
<<: *default
database: tr_test
migrations_paths: db/trmain_migrate
development:
primary:
<<: *default
database: tr_util_dev
trmain:
<<: *default
database: tr_dev
migrations_paths: db/trmain_migrate
和模型:
class Appuser < TrBase
...
end
class TrBase < ActiveRecord::Base
self.abstract_class = true
connects_to database: { writing: :trmain, reading: :trmain }
end
控制器:
def show
appuser_id = params[:id]
user_details = Appuser.find_user_details(appuser_id: appuser_id)
render json: user_details, status: 200
end
在测试中,find_user_details 方法 运行 没有任何问题,并且 user_details 设置为预期结果。但是,渲染中抛出“ActiveRecord::ConnectionNotEstablished(未找到 'primary' 的连接池。)”错误。
我可以通过添加“each_serializer: nil”来渲染来解决这个问题。似乎 Rails 没有到 'primary' 的连接池,因为这个端点只连接到 :trmain 数据库,但出于某种原因渲染想要从 primary 找到一个 ActiveRecord 序列化程序。
def show
appuser_id = params[:id]
user_details = Appuser.find_user_details(appuser_id: appuser_id)
render json: user_details, status: 200, each_serializer: nil
end
我正在 API rails 6.0 上工作。应用程序中的某些模型连接到第二个数据库,这是 database.yml 中的设置:
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 50 } %>
test:
primary:
<<: *default
database: tr_util_test
trmain:
<<: *default
database: tr_test
migrations_paths: db/trmain_migrate
development:
primary:
<<: *default
database: tr_util_dev
trmain:
<<: *default
database: tr_dev
migrations_paths: db/trmain_migrate
和模型:
class Appuser < TrBase
...
end
class TrBase < ActiveRecord::Base
self.abstract_class = true
connects_to database: { writing: :trmain, reading: :trmain }
end
控制器:
def show
appuser_id = params[:id]
user_details = Appuser.find_user_details(appuser_id: appuser_id)
render json: user_details, status: 200
end
在测试中,find_user_details 方法 运行 没有任何问题,并且 user_details 设置为预期结果。但是,渲染中抛出“ActiveRecord::ConnectionNotEstablished(未找到 'primary' 的连接池。)”错误。
我可以通过添加“each_serializer: nil”来渲染来解决这个问题。似乎 Rails 没有到 'primary' 的连接池,因为这个端点只连接到 :trmain 数据库,但出于某种原因渲染想要从 primary 找到一个 ActiveRecord 序列化程序。
def show
appuser_id = params[:id]
user_details = Appuser.find_user_details(appuser_id: appuser_id)
render json: user_details, status: 200, each_serializer: nil
end