Ruby on rails 检查是否存在';在销毁rails admin ruby之前

Ruby on rails 检查是否存在';在销毁rails admin ruby之前,ruby-on-rails,ruby,rails-admin,Ruby On Rails,Ruby,Rails Admin,我目前正在做一个项目,在我们的项目中有两个表/类ActivityType和Activity。在这个项目中,我们还使用了一个名为rails admin的gem。如果活动中使用了活动类型,则管理员无法删除该活动类型 活动 class Activity < ApplicationRecord belongs_to :activity_type end 课堂活动

我目前正在做一个项目,在我们的项目中有两个表/类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
class ActivityType
def ensure_has_no_activity_type
  if activities.present?
    errors.add(:base, 'Cannot delete activity type that has activity')
    throw(:abort)
  end
end

它是否给出错误?它不会返回任何错误,但会继续删除。请尝试将除非块替换为仅
activities.present?
,因此我将删除除非activities.count==0,然后使其成为activities.present?如果是,它将继续删除:(对不起,我的意思是另一种方式。)检查答案..顺便问一下哪个rails版本?它不起作用,如果我错了请纠正我..:base是模型的名称,对吗?我还试图使用错误。添加(:base,'message:cannotelete activity type that activity')删除引号,message是键:。
errors.add(:base,消息:“无法删除具有活动的活动类型”)
我也尝试了错误。添加(:base,消息:“无法删除具有活动的活动类型”)没有更改..我重新启动了我的服务器。你说没有更改是什么意思?如果你想让rails管理员显示该消息,这是一条需要覆盖的flash消息,这似乎是一个完全不同的问题。通过上述方法,你将在
对象中获得消息。错误。消息