[英]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.