У меня есть клиенты и счета-фактуры. Пользователи могут удалять клиентов, но не счета-фактуры.Rails удаляет родительскую модель, но все равно доступ к детям
Проблема заключается в том, когда клиент будет удален, я не могу больше делать
invoice.customer.name
Поскольку клиент равен нулю.
У меня есть какое-то решение на доске для рисования
Сохранить некоторую информацию о клиенте на экземпляре счета-фактуры, когда счета производятся.
Не удаляйте клиента, но скрывайте его от пользователя с помощью логического поля . Таким образом, экземпляр клиента все еще существует.
Я знаю, что этот вопрос может быть закрыт, потому что ответы могут быть упрямыми. Рельсы очень упрямы почти во всем. По этой проблеме я никогда не видел мнения, поэтому:
Какова наилучшая практика в этом случае?
(Если у вас есть лучшее решение, которое я хотел бы видеть его)
+1 для паранойи, кажется приятной маленькой жемчужиной, я не знал о благодарности! –
Спасибо. У меня также есть класс фирмы. Это 'has_many: клиенты,: depend =>: destroy'. Вы знаете, как ведет себя паранойя, когда я удаляю фирму с вызовом 'act_as_paranoid' в классе клиента. –
паранойя длиной всего 140 строк, поэтому я бы посоветовал вам прочитать ее, чтобы понять механику, лежащую за ней, https://github.com/radar/paranoia/blob/master/lib/paranoia.rb, кажется, Rails удалит но настройте delete_at на клиентов. – gmaliar