ruby 使用单独数据库的文件跟踪版本控制

wnvonmuf  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(106)

我正尝试使用papertrail在单独的数据库中记录模型的更改事件。
使用Rails 4.1.2
Ruby 2.1
文档跟踪4.0.0
下面是我在关注点中添加的代码

module Foo
  class Base < ActiveRecord::Base
  end

 class Version < Base
  include PaperTrail::VersionConcern
 end

 class Topic < Base
   has_paper_trail class_name: 'Foo::Version'
 end
end
Foo::Base.establish_connection(:trail_development)

字符串
我已将此Foo包含在topic.rb中

class Topic < ActiveRecord::Base
  include Foo
end


当我试图创建、编辑或删除主题时,这不起作用。
参考https://github.com/airblade/paper_trail/pull/289

u0sqgete

u0sqgete1#

在Rails 6.0或更高版本中,这可以通过创建一个抽象的Version类连接到一个单独的数据库来完成,如下所示:

class AbstractVersion < PaperTrail::Version
  self.abstract_class = true
  connects_to database: { writing: :my_database, reading: :my_database }
end

class MyVersion < AbstractVersion
  # Optional: specify a different table name.
  # self.table_name = :my_versions
end

class Topic < ApplicationRecord
  has_paper_trail versions: {
    class_name: "MyVersion"
  }
end

字符串
在Rails中,必须将模型定义为抽象模型,才能使用不同的数据库连接。
PaperTrail允许您通过扩展其PaperTrail::Version基类来定义自定义Version类。
这可以通过创建一个添加has_paper_trail调用的模块来进一步抽象。

相关问题