へんなコードと三項演算子

作成してから数年経ってから指摘されたバグがあって、教室名を表示する所に教室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

へんてこりんなコードって残さないで抹消されてしまうので残してみた。