Audited audited_changes путаница
Я использую проверенное решение коллектива для аудита в рельсах. Итак, в базе данных есть столбец (audited_changes), который является определением TEXT. Когда я получаю аудит из базы данных, я получаю простую строку, и когда я вызываю этот атрибут в представлении, это неформатированная строка. В rdocs говорится, что есть сериализованный хэш всех изменений. Как я могу получить этот хэш? Кроме того, в тех же документах говорится, что есть доступ к old_attributes и new_attributes, как это?
По-моему:
<%= @audit.action %> # => update
<%= @audit.audited_changes %> # => --- name: - oldname - newname code: - oldcode - newcode
Или есть шанс отформатировать это?
2 ответа
Я думаю, что в настоящее время может быть ошибка в проверенных. Вы используете 3.0.0rc1? Это то, что я использую, и у меня произошло нечто подобное. Во-первых, кажется, что "Audit" не распознается как объект ActiveRecord, поэтому я создал пустую модель в app / models / audit.rb. Как только я сделал это, я увидел поведение, которое вы видите. Чтобы исправить это, я удалил app / models / audit.rb и добавил config/initializers/audited.rb со следующим:
include Audited::Adapters::ActiveRecord
Это старый вопрос, но у меня есть альтернативный ответ, который, кажется, хорошо работает для меня, используя Rails 4.2. Вместо использования инициализатора в ответе выше, я предлагаю сохранить модель и добавить "serialize:audited_changes" в начало.
class Audit < ActiveRecord::Base
belongs_to :user
serialize :audited_changes
end
Вы можете использовать встроенную модель Audited::Audit для запроса ее данных.
Например,
audit = Audited::Audit.last
audit.audited_changes # => {"name"=>["Steve", "Ryan"]}
"Стив" - это старое значение, "Райан" - новое значение. По умолчанию хеш хранится в базе данных в формате yaml.