我有一个小型rails应用程序,我正在尝试获取一些订单统计信息.
所以我有一个Admin模型和一个Order模型,具有一对多的关联.
所以我有一个Admin模型和一个Order模型,具有一对多的关联.
class Admin < ActiveRecord::Base attr_accessible :name has_many :orders class Order < ActiveRecord::Base attr_accessible :operation belongs_to :admin
admins = Admin.where(...).includes(:orders).where('orders.operation = ?','new gifts!')
这与预期一样有效.但是当我尝试使用这样的地图制作json时
admins.map {|a| [a.name,a.orders.pluck(:operation)]}
Rails使用新查询再次加载订单,忽略已加载的对象.
(5.6ms) SELECT "orders"."operation" FROM "orders" WHERE "orders"."admin_id" = 26 (6.8ms) SELECT "orders"."operation" FROM "orders" WHERE "orders"."admin_id" = 24 (2.9ms) SELECT "orders"."operation" FROM "orders" WHERE "orders"."admin_id" = 30 (3.3ms) SELECT "orders"."operation" FROM "orders" WHERE "orders"."admin_id" = 29 (4.8ms) SELECT "orders"."operation" FROM "orders" WHERE "orders"."admin_id" = 27 (3.3ms) SELECT "orders"."operation" FROM "orders" WHERE "orders"."admin_id" = 28 (5.1ms) SELECT "orders"."operation" FROM "orders" WHERE "orders"."admin_id" = 25
当我尝试使用时
循环而不是map,它按原样运行:
admins.each do |a| p a.orders.pluck(:operation) end