我有一个模型,比方说广告,我打算从中获取2个数据集,然后将它们合并为1.这是否可能:
ads = Ad.where(etc).limit(5)
if ads.length < 5
merge = Ad.where(etc).limit(remainder)
// merge both here
答案 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