Я застрял. Я пытался выяснить, как включить изменения ассоциации (has_many
, has_many through
) на модель, имеющую papertrail. Я хотел бы позвонить MyModel.versions.first.changeset
и внести любые изменения, произошедшие на связанных объектах, в хэш-код .changeset
, который возвращается из этой версии объекта.Rails/Papertrail: Изменения с изменениями ассоциации
Я добавил миграции для версии ассоциаций:
class CreateVersionAssociations < ActiveRecord::Migration
def self.up
create_table :version_associations do |t|
t.integer :version_id
t.string :foreign_key_name, :null => false
t.integer :foreign_key_id
end
add_index :version_associations, [:version_id]
add_index :version_associations, [:foreign_key_name, :foreign_key_id], :name => 'index_version_associations_on_foreign_key'
end
def self.down
remove_index :version_associations, [:version_id]
remove_index :version_associations, :name => 'index_version_associations_on_foreign_key'
drop_table :version_associations
end
end
class AddTransactionIdColumnToVersions < ActiveRecord::Migration
def self.up
add_column :versions, :transaction_id, :integer
add_index :versions, [:transaction_id]
end
def self.down
remove_index :versions, [:transaction_id]
remove_column :versions, :transaction_id
end
end
Я добавил Papertrail к ассоциированным объектам, но, насколько я могу сказать, что нет никакой документации, обсуждая ВОССТАНОВЛЕНИЕ изменения, которые произошли на связанных объектов. Может ли кто-нибудь помочь, если это возможно с помощью Papertrail?
Я пытаюсь реализовать контрольный журнал изменений в модели и связанных с ней объектах, к которым можно получить доступ в одном наборе изменений.
Я думаю, что я ищу аналогичную функцию. Я хотел бы записать изменение 'own_to' в' has_many'. Например, если «Лицо» имеет много «PhoneNumber's» и вы меняете/добавляете/удаляете номер человека, оно записывает это изменение как изменение на _person_, а не записывает его как изменение на номер телефона. – Luke
@ Люк, да, я попробовал некоторое время назад, но это не похоже, что эти типы отслеживания ассоциаций полностью превратили его в papertrail, вот как старый билет, описывающий некоторые трудности, они работают над ним для будущей версии, i следите за ним каждый раз через некоторое время https://github.com/airblade/paper_trail/issues/503 – heinztomato