Журнал изменений в базе данных - PullRequest
1 голос
/ 07 ноября 2011

У меня около 15 более или менее сложных моделей. Из тех, кого я хотел бы отслеживать изменения. Какой самый простой способ? Триггеры после сохранения / обновления?

Производительность важна, но если есть способ с низкой сложностью, но снижением производительности, я сделаю это.

Кстати: я не хочу использовать хранимые процедуры. (Хотя я мог бы, если бы был действительно простой способ сделать это ...)

Спасибо, Филипп

Ответы [ 2 ]

0 голосов
/ 07 ноября 2011

Вы также можете посмотреть на Грязные объекты , предоставленные ActiveRecord из коробки.Это дает вам возможность работать с объектами, пока они находятся в процессе сохранения, чтобы вы могли вносить изменения в отдельную таблицу.

0 голосов
/ 07 ноября 2011

Существует verstal_versions , который, кажется, делает то, что вы хотите сделать.

Он добавляет версионирование ко всем указанным вами моделям.См., Например:

class User < ActiveRecord::Base
  versioned

  validates_presence_of :name
end

Тогда вы можете использовать версии вашей модели, например:

>> u = User.create(:name => "Steve Richert")
=> #<User first_name: "Steve", last_name: "Richert">
>> u.version
=> 1
>> u.update_attribute(:name, "Stephen Richert")
=> true
>> u.name
=> "Stephen Richert"
>> u.version
=> 2
>> u.revert_to(10.seconds.ago)
=> 1
>> u.name
=> "Steve Richert"
...