如何在任何方法中传递参数枚举?

how to pass parameters enum in method any?

如何参数化枚举?我想在任何方法中使用我的枚举值吗?为我的 ActiveRecord

检查真假

我有方法is_any?检查我的 ActiveRecord

  def is_any? status
    album.voice_guides.all_except(params[:ids]).any?(&status?)
  end

然后打电话给is_any?在这个方法中

  def verify_bulk_destroy
    return if album.pending?

    if album.publish?
      raise Api::Error::ControllerRuntimeError, :error unless is_any? 
       (:publish)
    end
  end

但它引发错误

  undefined method `status?' for #<Api::Admin::Albums::PremiumGuidesController:0x0000000000d278>
   Did you mean?  status
                  status=

只需将您的 is_any? 方法更改为

def is_any?(status)
  album.voice_guides.all_except(params[:ids]).any? { |guide| guide.status == status } 
end

这将像您之前的方法一样首先将所有记录加载到内存中。

或者当您想检查数据库中的条件而不将记录加载到内存中时,这可能会更快,具体取决于您的需要:

def is_any?(status)
  album.voice_guides.all_except(params[:ids]).where(status: status).exists?
end