gpt4 book ai didi

sql - 按值对进行 ActiveRecord 查询

转载 作者:行者123 更新时间:2023-12-02 17:13:30 25 4
gpt4 key购买 nike

我使用的是 Rails 5.1+,我想根据两个条件查询一个模型,这两个条件可以有多个值,但总是两个两个。

假设我有一个 User 模型,它有一个 first_namelast_name。我正在寻找具有以下任一条件的用户:

first_name: "John"
last_name: "Doe"

first_name: "Jane"
last_name: "Snow"

我怎样才能写一个指定这个的查询?我总是可以生成一个 SQL 查询字符串,然后将其传递给 where 子句,但我想知道是否有更好的方法。

最佳答案

您可以尝试在您的模型中定义一个辅助方法并使用方法(未测试):

class User
def self.where_in_pairs(values = [])
values.map { |(first_name, last_name)|
where(first_name: first_name, last_name: last_name)
}.reduce(:or)
end
end

然后这样调用:

User.where_in_pairs([["John", "Doe"], ["Jane", "Snow"]])

您也可以为此使用普通的 arel(测试):

class User
def self.where_in_pairs(values = [])
where(
values.map { |(first_name, last_name)|
arel_table[:first_name].eq(first_name).and(
arel_table[:last_name].eq(last_name)
)
}.reduce(:or)
}
end
end

关于sql - 按值对进行 ActiveRecord 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47813569/

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