ActiveRecord:急切加载,但只加载ID

时间:2013-03-20 18:37:38

标签: sql ruby-on-rails activerecord

假设我有这些模型:

class Order < ActiveRecord::Base
  has_many :lines
end

class Line < ActiveRecord::Base
  belongs_to :order
end

我想在一个请求中加载一些订单记录及其#line_ids。但是,我宁愿不将所有Line记录实例化为ActiveRecord对象。另外,我不想覆盖ActiveRecord提供的#line_ids方法。

这可能吗?

1 个答案:

答案 0 :(得分:0)

选择单个列而不是选择行不应该产生太大的性能差异,除非您在Line模型上有许多属性,这可能反过来提示重构。

如果你只想要id,我可能会在我的订单模型中做这样的事情

def line_ids_array
  Line.where(order_id: self.id).pluck(:id)
end

这应该返回特定订单的行ID的数组。