加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 相当于rails 4中的“find_all_by_id”

发布时间:2020-12-17 04:18:45 所属栏目:百科 来源:网络整理
导读:我有一组id,我想使用活动记录查询从数据库中找到它们各自的记录.例如:ids = [2,3,1] 现在,让我找到一个特定模型的所有记录,其id是数组中的一个,在较低版本的rails中,我想我可以做类似的事情: Model.find_all_by_id([2,1]) 但根据this post, These methods
我有一组id,我想使用活动记录查询从数据库中找到它们各自的记录.例如:ids = [2,3,1]

现在,让我找到一个特定模型的所有记录,其id是数组中的一个,在较低版本的rails中,我想我可以做类似的事情:

Model.find_all_by_id([2,1])

但根据this post,

These methods were deprecated on 4.0 and removed at 4.1. If you want to
keep sing then you need to include this gem
https://github.com/rails/activerecord-deprecated_finders

我的问题是,我无法在rails4.2中执行此操作而无需包含gem?

谢谢.

解决方法

officially proposed alternative是Model.where(id:[2,1]).
# There are 3 users in the db,with ids 1,2,and 3
> User.where(id: [1,4,1234]).pluck(:id)
  SQL (2.5ms)  SELECT `users`.`id` FROM `users` WHERE `users`.`id` IN (1,1234)
 => [1,3]

请注意:

建议的(现在删除的)Model.find([2,1])不等效,如果数组中的任何id不存在,它将抛出异常.

类似地,建议的(现在已编辑)Model.find_by(id:[2,它只返回一个结果.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读