![](/img/trans.png)
[英]How to apply where clause in Rails ActiveRecord when the value is not 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.