繁体   English   中英

Rails的where子句中没有特定值的记录时如何获取nil对象

[英]How to get nil object when there is no record for a specific value in where clause in rails

目前,我正在通过以下方式在哪里查询中的电话号码字段中获取用户记录。

users = User.where(phone: ["123421341234", "123423144", "123423144","444633333",,,,,,,,,,,,])

我有前三个手机号码的用户记录。 但是对于第4个手机号码(444633333),表中没有用户记录,因此对于该用户,我想获取“ nil”对象。(如果存在,则应返回该用户对象)

我如何更改以上查询。 结果数组应包含序列中的对象(在搜索数组序列中)

我认为,不对数据库进行太多查询的唯一方法就是通过先拥有的phone_number加载所有用户,然后将phone_numbers映射到找到的用户

phones_numbers = [7799569, 7818111, 7820442, 78343033, 78347700, 7836863, 7837873, 7837898, 7838025, 7838442]
users = User.where(phone_number: phones_numbers)

users = phones_numbers.map { |number| users.find_by(phones_number: number) }

加载的用户将被缓存在内存中,因此即使有查询,他们的运行时间也将是微不足道的

如果您想在红宝石/铁轨级别上执行此操作,也可以使用#detect

#same stuff as above

users = phones_numbers.map { |number| users.detect { |user| user.phones_number == number } }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM