Из-за бумажного следа невозможно использовать поля с именной версией

У меня есть стол с именем clients при поддержке модели AR Client, Это структура clients Таблица:

clients
  - id <serial primary key>
  - name <varchar(255)>
  - version <varchar(255)>

Я добавил к нему версии, используя бумажный след. Однако при обновлении или создании записи столбец version не обновляет. И когда я делаю Client.first.version это дает мне nil значение, хотя все мои записи в таблице имеют version столбец, который не является нулевым или пустым. Я подозреваю, что это из-за жемчужины бумажного следа. Когда я переключаю ветку моего проекта на версию, которая не использует гем, я могу получить значение версии, отличное от nil.

Есть ли способ обойти эту проблему?

1 ответ

Решение

Конечно, есть. Проблема в том, version является именем ассоциации по умолчанию в paper_trail, таким образом вызывая ассоциацию на клиенте, а не выбирая ее атрибут. Вы можете изменить свою модель как:

class Client < ActiveRecord::Base
  has_paper_trail version: :paper_version, versions: :paper_versions
end

c = Client.first
c.version #=> row field
c.paper_versions #=> previous versions.

Изменить: только что обнаружил, что это также задокументировано в paper_trail здесь - https://github.com/airblade/paper_trail

Другие вопросы по тегам