在ROR中,有如下代碼:“ is_liked = Like.where(chain_id: chain_data.id, user_id: current_user[:id]).first.is_like || false”,現(xiàn)在where查詢語句有可能查不到,會導(dǎo)致報錯,該怎么處理呢?
你可以使用.try()方法來避免當(dāng)查詢結(jié)果為空時的錯誤。這樣,如果查詢結(jié)果為空,它將返回nil而不是拋出異常。以下是完善后的代碼:
is_liked = Like.where(chain_id: chain_data.id, user_id: current_user[:id]).first.try(:is_like) || false
或者,你也可以使用更簡潔的操作符&.來完成相同的操作:
is_liked = Like.where(chain_id: chain_data.id, user_id: current_user[:id]).first&.is_like || false
無論哪種方法,都可以確保當(dāng)查詢結(jié)果為空時,代碼不會拋出異常。