1
我有以下行來計算玩家有多少天一直處於俱樂部:在sort_by中使用屬性條件來捕獲nil值?
Player.where(:current_player => false).sort_by {|p| p.departures.first.departure_date - p.arrivals.first.arrival_date}
這工作得很好非現役球員。不過,我想不僅包括前球員,還包括現任球員。我想與Player.all
交換Player.where(:current_player => false)
,但是然後sort_by
明顯地捕獲了一堆空位(因爲目前的球員沒有離開 - 他們仍然在俱樂部)。
然後我嘗試這樣的條件:
Player.all.sort_by {|p| (p.departures.first.departure_date || Date.today) - p.arrivals.first.arrival_date}
...但我意識到,它仍然失敗的原因是因爲它在尋找一個departure_date
nil對象上(因爲p.departures
不能在所有的球員存在)。
所以最好我需要這樣的事情,但我不能得到它的工作:
Player.all.sort_by {|p| (IF p.departures? p.departures.first.departure_date ELSE Date.today) - p.arrivals.first.arrival_date}
我知道這是錯的,只是顯示我想要實現:
- 如果玩家有任何偏離,使用
p.departures.first.departure_date
- 否則使用
Date.today
我在做什麼錯?
完美,謝謝! – mantralux