へんなコードと三項演算子
作成してから数年経ってから指摘されたバグがあって、教室名を表示する所に教室IDが表示されていた。
あまり教室名を入力していないこともあって指摘されたときには唖然として5分間は動けなかった。
普段は面倒だから教室名カラムを持たせているのに、このDBにはIDしかないので取り敢えずの対策を考えた。
# その場しのぎバージョン # classroom_idは存在するが、classroomは存在しない def show @rental = Rental.find(params[:id]) @rental["classroom"]=nil @rental.classroom = Support::Classroom.find(@rental.classroom_id).name unless @rental.classroom_id.nil? end
動くけど非常にかっこ悪いので書きなおす
# 書きなおしたバージョン def show @rental = Rental.find(params[:id]) if @rental.classroom_id.nil? @rental["classroom"]=nil else @rental["classroom"]=Support::Classroom.find(@rental.classroom_id).name end end
見直すとかっこ悪いので三項演算子を導入
# 三項演算子バージョン def show @rental = Rental.find(params[:id]) @rental["classroom"] = @rental.classroom_id.nil? ? nil : Support::Classroom.find(@rental.classroom_id).name end
へんてこりんなコードって残さないで抹消されてしまうので残してみた。