Из-за бумажного следа невозможно использовать поля с именной версией
У меня есть стол с именем 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