如何在任何方法中传递参数枚举?
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
如何参数化枚举?我想在任何方法中使用我的枚举值吗?为我的 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