Ruby on rails Rails中是否有与SQLServer中相同的已删除表?

Ruby on rails Rails中是否有与SQLServer中相同的已删除表?,ruby-on-rails,activerecord,triggers,delete-row,Ruby On Rails,Activerecord,Triggers,Delete Row,我需要能够在我的rails应用程序中执行下面演示的操作。如您所见,在SQLServer中有一个名为DELETED的表,用于存储刚刚删除的行。资料来源: 将此逻辑应用于rails,是否有这样一个表/位置可供调用以获取这些行,就像它们在rails中被删除一样?我知道销毁之前/之后有回调,但如何访问正在销毁的信息?依赖特定于数据库的行为不是ActiveRecord的功能所在。它仅使用RDBMS作为持久存储的一种形式。像这样的数据处理委托给应用程序代码 ActiveRecord原则声明数据库中的每一行都

我需要能够在我的rails应用程序中执行下面演示的操作。如您所见,在SQLServer中有一个名为DELETED的表,用于存储刚刚删除的行。资料来源:


将此逻辑应用于rails,是否有这样一个表/位置可供调用以获取这些行,就像它们在rails中被删除一样?我知道销毁之前/之后有回调,但如何访问正在销毁的信息?

依赖特定于数据库的行为不是ActiveRecord的功能所在。它仅使用RDBMS作为持久存储的一种形式。像这样的数据处理委托给应用程序代码

ActiveRecord原则声明数据库中的每一行都是应用程序中模型类的实例。因此,对即将销毁的模型实例调用回调

在销毁模型之前(
Before\u destroy
),应该可以通过回调中的类字段访问数据。因此,您应该能够将此回调放入您希望跟踪的模型之一:

def log_to_history
  DeletedStuff.create(
      title: "Something number #{id}",
      deleted_at: Time.now,
      content: self.to_yaml
    )
end

before_delete :log_to_history
这是一个有点奇怪的例子,它允许在同一个表中存储几乎任何已删除的项(甚至不同模型的实例),属性是用YAML序列化的。但我尽了最大努力公开了数据结构,所以它可以很容易地修改以满足您的需要

此示例需要一个带有字段的
DeletedStuff
模型

  • 标题:字符串
  • 已删除\u时间
  • 内容:文本

除了rails中的临时表之外,还有其他方法可以做到这一点吗?@Sauron“临时表”是什么意思?这取决于你想要实现什么。你如何才能只获得正在删除的记录?我希望获取正在销毁并尝试的记录的id。其中(活动id::id)在销毁前调用的方法中,但没有返回任何内容。@Sauron回调方法在正在删除的对象的上下文中执行。我的意思是,它是
self
。那么如何才能删除该对象。那么我可以使用语法
@deleted\u row=self
def log_to_history
  DeletedStuff.create(
      title: "Something number #{id}",
      deleted_at: Time.now,
      content: self.to_yaml
    )
end

before_delete :log_to_history