使用||为变量分配值Ruby中具有if条件的运算符

我正在尝试为搜索查询编写逻辑。有许多具有不同参数的不同条件。从表单发送的一个参数是code。因此,两个不同的表中有code个值:competitionsresponses。我需要首先在params[:code]表中检查competitions值,如果不存在,请在responses表中检查。如果在任何一个表中都不存在,则应返回nil。我试图将其写在单个if语句中。我尝试过的代码如下:

competitions = Competition.includes(:event,:responses)
if params[:code].present?
  competitions = (competitions.where(code: params[:code])) || 
  (competitions.joins(:responses).where(responses: { code: params[:code] }))

上面的代码仅检查competitions.where(code: params[:code])的值。如果该值为[],则它不在评估第二个条件。我应该做些什么更改才能使上述代码按照上述要求工作?

L_KJJ 回答:使用||为变量分配值Ruby中具有if条件的运算符

competitions.where(code: params[:code])返回一个总是真实的Relation对象。

幸运的是,它实现了#presence方法,如果不是空白,则返回值,或者返回nil。因此,这应该可行:

competitions.where(code: params[:code]).presence || ...
本文链接:https://www.f2er.com/3126105.html

大家都在问