Вести учет удаленных предметов - PullRequest
1 голос
/ 19 ноября 2009

Здравствуйте, у меня есть приложение rails, которое обрабатывает продажи, сейчас мне нужно иметь возможность удалить продажу, чтобы сохранить ясность учета, но регистрировать где-то еще детали этой записи.

Я думаю, мне может понадобиться создать регистратор, но я понятия не имею, как, или, может быть, другой объект, который создается при уничтожении продажи.

Заранее спасибо

Ответы [ 4 ]

3 голосов
/ 19 ноября 2009

Просто идея - вы можете добавить в вашу текущую таблицу столбец, который будет действовать как «удаленный» флаг (я всегда называл это логическим удалением). Затем вы можете добавить область действия по умолчанию, чтобы отфильтровать «удаленные» записи и добавить некоторые именованные области, которые будут включать «удаленные» записи, когда они вам понадобятся.

1 голос
/ 19 ноября 2009

действует как параноик - это плагин, который будет обрабатывать это для вас, но если вам что-то не нравится, вы можете свернуть свою собственную версию, как предложил Энди, возможно, с отметкой времени удаленного_тата Вы можете попробовать переопределить действие уничтожения на модели - я сам не пробовал, но что-то вроде этого должно работать:

class Sale < ActiveRecord::Base
  def destroy
    update_attributes(:deleted_at => Time.now)
  end
end
0 голосов
/ 19 ноября 2009

В итоге я создал объект delete_sale, а затем в своем наблюдателе за продажами создал и заполнил данные о продаже непосредственно перед ее уничтожением.

  @delsale = DeletedSale.create


   @last_deleted_sale = DeletedSale.find(:last)

    ActiveRecord::Base.connection.execute "UPDATE deleted_sales SET name = #{@venta.id} WHERE id = #{@last_deleted_sale.id};"


  @delsale.update_attributes :cliente => @venta.cliente.name
     @delsale.update_attributes :vendedor => @venta.vendedor.name

     @delsale.update_attributes :instalador => @venta.instalador.name
     @delsale.update_attributes :precio_de_venta => @venta.precio_de_venta
     @delsale.update_attributes :precio_de_instalacion => @venta.precio_de_instalacion
      if @venta.producto_id?
     @delsale.update_attributes :producto_id => @venta.producto_id
    end
     if @venta.cart_id?
     @delsale.update_attributes :cart_id => @venta.cart_id
    end
0 голосов
/ 19 ноября 2009

Как вы сказали, вы можете создать другой объект / модель, в которой вы будете создавать новый экземпляр при каждом удалении продажи. Назовите это SaleRecord или SaleHistory ... как-то так. Затем вы можете получить эти записи и делать что угодно. Тогда хорошим вариантом использования будет поиск записей о продажах для конкретного продукта для расчета статистики его популярности ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...