ActiveRecord合并相同模型的数据集?

时间:2012-05-30 17:34:42

标签: ruby-on-rails-3 activerecord

我有一个模型,比方说广告,我打算从中获取2个数据集,然后将它们合并为1.这是否可能:

ads = Ad.where(etc).limit(5)

if ads.length < 5
  merge = Ad.where(etc).limit(remainder)

// merge both here

1 个答案:

答案 0 :(得分:3)

ActiveRecord允许您进行链接。试试这个,它只会执行一个查询。

ads = Ad.where(etc).limit(5)
ads = ads.where(etc).limit(remainder)

但在您的情况下,您调用length方法,因此它将执行两个查询。但是,您仍然可以进行链接。用户count方法优于length方法,因为count会向您的数据库发送COUNT(*)(更快)。 length将根据where条件加载所有记录,并对数组进行计数(较慢)。

ads = Ad.where(etc).limit(5)
if ads.count < 5
  ads = ads.where(etc).limit(remainder)
end