make has_many:通过不可删除

时间:2015-01-29 15:00:32

标签: ruby-on-rails ruby ruby-on-rails-2

我在我加入的模型上使用了一个活动标志,而不是删除它们。如何指定阻止破坏这些条目的条件?

3 个答案:

答案 0 :(得分:1)

最好在表中创建一个新字段,并将其命名为is_deleted,数据类型为boolean.And更新它而不是销毁数据。

答案 1 :(得分:0)

您应该在模型/模型中覆盖destroy方法。

可在此处找到类似的解决方案:https://stackoverflow.com/a/9333524/4416209

答案 2 :(得分:0)

您也可以使用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)

希望这能帮到你。