如果我这样做:
@open_shops = Shop.includes(:opening_times).where("opening_times.day =?", today)
.order("opening_times.opens+opening_times.open_for")
@open_shops.size 返回 10
如果我这样做:
@open_shops = Shop.includes(:opening_times).where("opening_times.day =?", today)
.order("opening_times.opens+opening_times.open_for")
.limit(2)
@open_shops.size 按预期返回 2。.limit(1) 也可以按预期工作。
但如果我这样做:
@open_shops = Shop.includes(:opening_times).where("opening_times.day =?", today)
.order("opening_times.opens+opening_times.open_for")
.limit(3)
@open_shops.size 返回 2!如上所示,没有限制时返回 10 条记录,但限制为 3 时仅返回 2 条记录。对于 3-10 的任何限制,它返回的记录比应有的少 1。我的头脑是难以置信的。
删除 where 语句或 order 语句使 limit 按预期工作。
编辑:也许值得注意的是,每次都缺少相同的记录。它总是缺少列表中的最后一个。因此 limit(3) 准确地返回了 limit(2) 应该返回的结果。
这些是我的模型:
class Shop
has_many :opening_times
end
class OpeningTime
belongs_to :shop
end