[英]Rails query gives different ordering during testing
我的查询在Rails控制台和返回DESC订单的Web服务器上正常工作,但是在测试中返回ASC订单的测试失败。
下面是简化的模型代码。
class Room < ApplicationRecord
has_many :room_members
has_many :members, through: :room_members, source: :user
def self.hot_rooms
query = "SELECT r.*, rm,count
FROM rooms r
LEFT JOIN (SELECT room_id, count(room_id), max(id) as id
FROM room_members
GROUP BY room_id) rm
ON r.id = rm.room_id
WHERE r.is_started = true
ORDER BY rm.count DESC, rm.id DESC
LIMIT 12"
self.find_by_sql(query)
end
end
问题是rm.count DESC
。
Room.recent_rooms的结果是控制台和Web服务器上的DESC,但令人惊讶的是 ,测试时为ASC。
我解决了。 问题是由'nil'计数引起的。(控制台上没有nil)psql计数nil而不是0。我认为nil是一个很大的数字。 因此,我修改了代码,并解决了问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.