gpt4 book ai didi

ruby-on-rails - Rails4 : Is it possible to do an optional ActiveRecord search?

转载 作者:太空宇宙 更新时间:2023-11-03 18:10:25 25 4
gpt4 key购买 nike

假设我在我的数据库中有一条记录

+----+-----------+----------+
| id | firstname | lastname |
+----+-----------+----------+
| 1 | 'Bill' | nil |
+----+-----------+----------+

(注意姓氏为零)

有没有什么地方可以使用以下哈希结构作为搜索参数来检索上述记录:

vals = {firstname: "Bill", lastname: "test"}
Table.where(vals)

(即:找到最接近的匹配,忽略表中的nil列值)

(我正在考虑单独检查散列中的每个键并在找到匹配时停止,但只是想知道是否有更有效的方法,特别是对于更大的表)

最佳答案

您可以进行自定义搜索。

def self.optional_where params
query_params = params.keys.map do |k|
"(#{k} = ? OR #{k} IS NULL)"
end.join(" AND ")
where(query_params, *params.values)
end

然后你会像这样使用它

Table.optional_where(vals)

这将产生下一个查询

SELECT "tables".* FROM "tables" WHERE ((firstname = 'Bill' OR first_name IS NULL) AND (lastname = 'test' OR last_name IS NULL))

关于ruby-on-rails - Rails4 : Is it possible to do an optional ActiveRecord search?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35178309/

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