我目前正在做一个项目,在我们的项目中有2个表/类ActivityType和Activity。同样在这个项目中,我们使用了名为rails admin的gem。如果活动中使用了活动类型,则管理员无法删除活动类型。
活动
class Activity < ApplicationRecord
belongs_to :activity_type
end
活动类型
class ActivityType < ApplicationRecord
has_many :activities
before_destroy :ensure_has_no_activity_type
private
def ensure_has_no_activity_type
unless activities.count == 0
errors[:base] << "cannot delete activity type that has activity"
return false
end
end
end
问题:如何检查活动中是否有孩子?我的代码中有什么问题吗?
答案 0 :(得分:1)
这就是我的意思
def ensure_has_no_activity_type
if activities.present?
errors.add(:base, 'Cannot delete activity type that has activity')
throw(:abort)
end
end