Ruby on rails 保留已删除项目的记录

Ruby on rails 保留已删除项目的记录,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,你好,我有一个rails应用程序处理销售,现在,我需要的是能够删除销售,以保持会计清晰,但记录在其他地方,该记录的详细信息 我在想我可能需要创建一个记录器,但不知道如何创建,或者可能是在销售销毁时创建的另一个对象 提前感谢这只是一个想法-您可以在当前表中添加一列作为“已删除”标志(我一直称之为逻辑删除)。然后,您可以添加一个默认作用域来过滤“已删除”记录,并添加一些命名作用域,以便在需要时包含“已删除”记录。这只是一个想法-您可以在当前表中添加一列,作为“已删除”标志(我一直称之为逻辑删除)。然

你好,我有一个rails应用程序处理销售,现在,我需要的是能够删除销售,以保持会计清晰,但记录在其他地方,该记录的详细信息

我在想我可能需要创建一个记录器,但不知道如何创建,或者可能是在销售销毁时创建的另一个对象


提前感谢

这只是一个想法-您可以在当前表中添加一列作为“已删除”标志(我一直称之为逻辑删除)。然后,您可以添加一个默认作用域来过滤“已删除”记录,并添加一些命名作用域,以便在需要时包含“已删除”记录。

这只是一个想法-您可以在当前表中添加一列,作为“已删除”标志(我一直称之为逻辑删除)。然后,您可以添加一个默认作用域来过滤“已删除”记录,并添加一些命名作用域,以便在需要时包含“已删除”记录。

是一个插件,可以为您处理此问题,但如果有任何您不喜欢的地方,您可以像Andy建议的那样滚动您自己的版本,可能在时间戳处添加一个已删除的\u。您可以尝试覆盖模型上的销毁操作-我自己还没有尝试过,但类似的操作应该可以工作:

class Sale < ActiveRecord::Base
  def destroy
    update_attributes(:deleted_at => Time.now)
  end
end
class SaleTime.now时删除\u)
结束
结束
是一个插件,可以为您处理此问题,但如果您不喜欢它,可以按照Andy的建议推出自己的版本,可能在时间戳处添加一个已删除的\u。您可以尝试覆盖模型上的销毁操作-我自己还没有尝试过,但类似的操作应该可以工作:

class Sale < ActiveRecord::Base
  def destroy
    update_attributes(:deleted_at => Time.now)
  end
end
class SaleTime.now时删除\u)
结束
结束

正如您所说,您可以创建另一个对象/模型,以便在每次删除销售时创建一个新实例。将其命名为SaleRecord或SaleHistory。。。差不多吧。然后您可以检索这些记录并执行任何操作。然后,一个很好的用例是查找特定产品的销售记录,以计算其受欢迎程度的统计数据…

正如您所说,您可以创建另一个对象/模型,在每次删除销售时创建一个新实例。将其命名为SaleRecord或SaleHistory。。。差不多吧。然后您可以检索这些记录并执行任何操作。然后,一个很好的用例是查找特定产品的销售记录,计算其受欢迎程度的统计数据…

我最终创建了一个delete\u sale对象,然后在我的sale observer上创建并填充了销售数据,就在它被销毁之前

  @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

我最终创建了一个delete_sale对象,然后在我的sale观察器上创建并填充了在销毁之前的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

作为一个销售应用程序,我已经构建了一系列代码来获取报告等等。这会让我重写60%的应用程序,只是为了过滤标记为已删除的记录。谢谢。这将是我在开发早期肯定应该尝试的东西,作为一个销售应用程序,我已经构建了一系列代码来获取报告等等。这会让我重写60%的应用程序,只是为了过滤标记为已删除的记录。谢谢。我最后做了这个,让我们看看它是如何扩展的。我有很多报告,包括最畅销的产品和一个品牌中最畅销的产品。不是舒尔如何获得多大的人气。但是谢谢兄弟,我最终做了这件事,创建了一个名为deleted_sales的模型。我最终做了这件事,让我们看看它是如何扩展的。我有很多报告,包括最畅销的产品和一个品牌中最畅销的产品。不是舒尔如何获得多大的人气。但谢谢兄弟,我最终做了这件事,创造了一个名为“销售”的模型