我想防止删除与其他实体相关联的实体

时间:2018-12-26 09:40:10

标签: mysql ruby-on-rails

如果某个实体与用户界面中的另一个实体相关联,我想防止该实体的删除。

class foo 
  belongs_to bar

class bar

在获取/ foos(即Foo对象的列表)时,我们希望以某种方式显示每个foo的bar数量,用户界面可以以此为指示,以避免删除Bar实体刨丝器零

2 个答案:

答案 0 :(得分:1)

要防止删除与另一个实体关联的一个实体,可以使用软删除来完成。在rails中,可以使用 acts_as_paranoid gem 来实现。

https://github.com/ActsAsParanoid/acts_as_paranoid

答案 1 :(得分:0)

我认为您的示例是错误的,您要说的是以下内容:

class foo < ApplicationRecord
  has_many :bars
end

class bar < ApplicationRecord
  belongs_to :foo
end

如果是这种情况,则需要实现counter cache

您的代码将变为:

class bar < ApplicationRecord
  belongs_to :foo, counter_cache: true
end

您应该在foo上添加一个名为bars_count的列;

现在,无论何时创建新的foo,它都会自动增加bars_count;当然,删除foo时要减少它。

相关问题