我正在尝试为搜索查询编写逻辑。有许多具有不同参数的不同条件。从表单发送的一个参数是code
。因此,两个不同的表中有code
个值:competitions
和responses
。我需要首先在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])
的值。如果该值为[]
,则它不在评估第二个条件。我应该做些什么更改才能使上述代码按照上述要求工作?