【发布时间】:2015-01-29 15:00:31
【问题描述】:
我在我的连接模型上使用了一个活动标志,而不是删除它们。如何指定一个条件来防止销毁这些条目?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-2
我在我的连接模型上使用了一个活动标志,而不是删除它们。如何指定一个条件来防止销毁这些条目?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-2
最好在表中创建一个新字段,并将其命名为 is_deleted,数据类型为布尔值。然后更新它而不是破坏数据。
【讨论】:
你应该覆盖你的模型中的destroy方法。
可以在这里找到类似的解决方案:https://stackoverflow.com/a/9333524/4416209
【讨论】:
您也可以使用paranoia gem。这将使用 deleted_at 时间戳进行软删除,并添加必要的条件来过滤掉“已删除”记录。
如果您想保持活动列,您可以阅读源代码以获得灵感。基本上它只是为包括它在内的任何类添加一个默认范围,并用以下方式替换destroy:
def destroy
transaction do
run_callbacks(:destroy) do
touch_paranoia_column
end
end
end
那么
touch_paranoia_column
你可以使用
update_attribute(:active, true)
希望这对您有所帮助。
【讨论】: