1

我有一个模型,假设是 Ad,我计划从中获取 2 个数据集,然后将它们合并为 1 个。这可能吗:

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

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

// merge both here
4

1 回答 1

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
于 2012-05-30T17:54:57.193 回答