如果某个实体与用户界面中的另一个实体相关联,我想防止该实体的删除。
class foo
belongs_to bar
class bar
在获取/ foos(即Foo对象的列表)时,我们希望以某种方式显示每个foo的bar数量,用户界面可以以此为指示,以避免删除Bar实体刨丝器零
答案 0 :(得分:1)
要防止删除与另一个实体关联的一个实体,可以使用软删除来完成。在rails中,可以使用 acts_as_paranoid gem 来实现。
答案 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时要减少它。