Объект ActiveRecord не сохраняет переведенные значения с драгоценным камнем бумажного следа

Мы используем Rails 3.2.15 и гем Globalize для I18N. Недавно мы интегрировали Paper Trail Gem для аудита изменений модели.

Мы заметили, что любые поля модели, помеченные как переведенные, не обновляются в БД.

e.g.

class MyModel < ActiveRecord::Base
  translates :name
  has_paper_trail
end

Когда я обновляю атрибут имени объекта MyModel, он не сохраняется.

Версии:

Руби 1.9.3

Рельсы 3.2.15

Глобализация3

paper_trail 2.7.2


person Sid    schedule 20.04.2017    source источник
comment
Гем globalize хранит переведенные тексты не в таблице модели, а в специальной таблице переводов. Это означает, что изменение перевода не обновляет саму модель, поэтому у papertrail нет шансов заметить изменение. Вам также придется расширить модель перевода, чтобы использовать papertrail.   -  person spickermann    schedule 20.04.2017
comment
В переводах нет моделей за слово. драгоценный камень обрабатывает это внутренне   -  person Sid    schedule 20.04.2017


Ответы (1)


Я заставил его работать, обновив гем Globalize и установив гем globalize-versioning. Это работает довольно хорошо вместе.

class MyModel < ActiveRecord::Base
  translates :name, versioning: :paper_trail
  has_paper_trail
end

Это требует, чтобы вы получали версии переведенных элементов с my_model.translations.versions вместо обычного my_model.versions.

person Sid    schedule 23.04.2017