提问人:moh19814 提问时间:9/11/2023 更新时间:9/11/2023 访问量:43
Rails App:在 paper_trail 中使用多个版本表
Rails App: using multiple versions table in paper_trail
问:
我的应用程序正在使用 Rails 7.0.4 和 Ruby 3.0.4。 该应用程序使用多个带有 Active Record 的数据库(主数据库和辅助数据库),每个数据库都位于特定服务器上。 在应用程序中,我有不同的模型,它们都具有从主数据库读取和写入访问权限,并且还启用了paper_trail。 只有一个模型(学生)具有从辅助数据库读取和写入访问权限。
在数据库(主数据库和辅助数据库)上,都有一个“版本”表。
我想做的是,将 Student 模型的版本表设置为辅助数据库。因此,对于所有模型,版本表将位于主数据库上;并且仅对于 Student 模型,版本表将位于辅助数据库上。 到目前为止,Hier 是我的配置:
class StudentRecord < ApplicationRecord
self.abstract_class = true
# acts_as_paranoid
acts_as_paranoid
# paper_trail
has_paper_trail :versions => { :class_name => "StudentVersion" }
connects_to database: { reading: :secondary, writing: :secondary }
end
class StudentVersion < PaperTrail::Version
self.table_name = "school_log.versions"
self.sequence_name = "school_log.versions_id_seq"
end
development:
primary:
adapter: postgresql
host: xxxxxxxxxxxxx
database: school_portal
username: xxxxxxxxxxxxx
password: xxxxxxxxxxxxx
pool: 20
schema_search_path: "public,school_data,school_log"
secondary:
adapter: postgresql
host: xxxxxxxxxxxxx
database: school_portal
port: xxxxxxxxxxxxx
username: xxxxxxxxxxxxx
password: xxxxxxxxxxxxx
pool: 14
schema_search_path: "public,school_data,school_log"
class Student < StudentRecord
.....
end
我的配置是否正确?如何将 Student 模型的版本表设置为辅助数据库?
此外,在控制台中,如果我更改学生即时记录中的某些参数并尝试保存它 (.save),我收到错误“ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violations unique constraint ”versions_pkey“”。如何解决这个问题?
答: 暂无答案
评论