rails 查询(2)
2. 获取多个数据
2.1 使用多个主键
Model.find(array_of_primary_key)
方法可接受一个由主键组成的数组,返回一个由主键对应记录组成的数组
代码
# Find the clients with primary keys 1 and 10. client = Client.find([1, 10]) # Or even Client.find(1, 10) # => [#<Client id: 1, first_name: "Lifo">, #<Client id: 10, first_name: "Ryan">]
2.2 take
Model.take(limit)
方法获取 limit
个记录,不考虑任何顺序
代码
Client.take(2) # => [#<Client id: 1, first_name: "Lifo">, #<Client id: 2, first_name: "Raf">]
2.3 first
Model.first(limit)
方法获取按主键排序的前 limit
个记录
代码
Client.first(2) # => [#<Client id: 1, first_name: "Lifo">, #<Client id: 2, first_name: "Raf">]
2.4 last
Model.last(limit)
方法获取按主键降序排列的前 limit
个记录
代码
Client.last(2) # => [#<Client id: 10, first_name: "Ryan">, #<Client id: 9, first_name: "John">]
3.批量获取多个对象
3.1 for_each
find_each
方法获取一批记录,然后分别把每个记录传入代码块。在下面的例子中,find_each
获取 1000 个记录,然后把每个记录传入代码块,直到所有记录都处理完为止
代码
User.find_each do |user| NewsLetter.weekly_deliver(user) end
3.2find_in_batches
find_in_batches
方法和 find_each
类似,都获取一批记录。二者的不同点是,find_in_batches
把整批记录作为一个数组传入代码块,而不是单独传入各记录。在下面的例子中,会把 1000 个单据一次性传入代码块,让代码块后面的程序处理剩下的单据
代码
# Give add_invoices an array of 1000 invoices at a time Invoice.find_in_batches(include: :invoice_lines) do |invoices| export.add_invoices(invoices) end
相关推荐
wl00 2020-10-28
EricNet 2020-07-05
EricNet 2020-05-27
何志文 2020-05-11
JOO 2020-04-26
happyfreeangel 2020-04-09
Poisedflw 2020-03-23
yangliuhbhd 2020-03-06
Ben的程序员生涯 2013-06-01
chenshuixian 2013-06-01
wes0 2014-05-31
mrice00 2019-12-20
EricNet 2019-12-11
89304896 2019-12-08
lihaoningxia 2013-07-09
userguanguan 2015-03-16