如何解决呈现结果时的ActiveRecord :: ConnectionNotEstablished未找到带有“主要”的连接池
我正在使用Rails 6.0上的API。该应用程序中的某些模型连接到第二数据库,这是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没有到“主要”的连接池,因为该端点仅连接到:trmain db,但是出于某种原因,渲染器希望从主要中找到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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。