gpt4 book ai didi

ruby - 使用 || 为变量赋值Ruby 中带有 if 条件的运算符

转载 作者:行者123 更新时间:2023-12-02 09:05:46 25 4
gpt4 key购买 nike

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

最佳答案

competitions.where(code: params[:code]) 返回一个始终为 true 的 Relation 对象。

幸运的是,它实现了#presence方法,如果值不为空则返回值,或者nil。所以,这应该有效:

competitions.where(code: params[:code]).presence || ...

关于ruby - 使用 || 为变量赋值Ruby 中带有 if 条件的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58796666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com