如果实体与另一个实体相关联,我想阻止删除它

4si2a6ki  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(316)

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

class foo 
  belongs_to bar

class bar

在获取/foos(即foo对象的列表)时,我们希望以某种方式显示每个foo的条数,用户界面可以将其用作指示,以避免删除大于零的条实体

g6ll5ycj

g6ll5ycj1#

为了防止删除与另一实体关联的一个实体,可以使用软删除。在rails中,可以使用acts\u as\u paranoid gem来实现。
https://github.com/actsasparanoid/acts_as_paranoid

3duebb1j

3duebb1j2#

我认为你的例子是错误的,你想说的是:

class foo < ApplicationRecord
  has_many :bars
end

class bar < ApplicationRecord
  belongs_to :foo
end

如果是这种情况,则需要实现计数器缓存。
您的代码将变成:

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

你应该加上 foo 一个名为 bars_count ;
现在,无论何时创建新的foo,它都会自动增加 bars_count ; 当然,当你删除一个foo时,减少它。

相关问题