ruby-on-rails - 渲染结果时 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 似乎没有到“primary”的连接池,因为这个端点只是连接到 :trmain db,但由于某种原因,render 想要从主节点中找到一个 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
推荐阅读
- c# - 如何在 RestSharp 中使用 XML 字段发出 Post SOAP 请求?
- php - ms sql server 上的 Yii2 迁移返回错误:找不到驱动程序
- python - 从每一代的已知顶点生成随机树图
- wiki - 使用 GAM 或 admin sdk api 更新成员的显示名称
- javascript - 如何创建一个使用 node 和 mongodb 发送邮件的 api
- jquery - 切换点击最多 4 次可以正常工作,但在第 6 次点击之后效果不佳
- php - JS数组没有被传递给php文件?
- html - 如何在 ion-item 中修改 .item-native 类?
- django - Django创建图像文件的路径
- amazon-web-services - 关于检索 AWS EC2 实例作为快照