Our manual implementation had a few issues. In particular, it didn't track changes related to associations, which became more of an issue when we made investments translatable. Using audited gives us more functionality while at the same time simplifies our code. However, it adds one more external dependency to our project. The reason for choosing audited over paper trail is audited seems to make it easier to handle associations.
27 lines
972 B
Ruby
27 lines
972 B
Ruby
class InstallAudited < ActiveRecord::Migration[5.0]
|
|
def change
|
|
create_table :audits, force: true do |t|
|
|
t.column :auditable_id, :integer
|
|
t.column :auditable_type, :string
|
|
t.column :associated_id, :integer
|
|
t.column :associated_type, :string
|
|
t.column :user_id, :integer
|
|
t.column :user_type, :string
|
|
t.column :username, :string
|
|
t.column :action, :string
|
|
t.column :audited_changes, :jsonb
|
|
t.column :version, :integer, default: 0
|
|
t.column :comment, :string
|
|
t.column :remote_address, :string
|
|
t.column :request_uuid, :string
|
|
t.column :created_at, :datetime
|
|
end
|
|
|
|
add_index :audits, [:auditable_type, :auditable_id, :version], name: "auditable_index"
|
|
add_index :audits, [:associated_type, :associated_id], name: "associated_index"
|
|
add_index :audits, [:user_id, :user_type], name: "user_index"
|
|
add_index :audits, :request_uuid
|
|
add_index :audits, :created_at
|
|
end
|
|
end
|