Когда у вас есть логический результат, который может быть как истинным, так и ложным (например, книга может быть либо извлечена, либо нет), вам нужно принять значение по умолчанию для результата. В этом случае мы можем предположить, что это неверно (книга не выписана по умолчанию).
В модели книги удалите строку has_many: checked_out и создайте метод с тем же именем:
def checked_out
book_check_outs || false
end
Это должно возвращать либо BookCheckOuts, либо, если с экземпляром нет ни одного, FALSE. Это дает вам быстрый, простой и надежный метод проверки ассоциации и устранения неприятной ошибки нулевого объекта.
Редактировать Вы также можете просто вернуть TRUE или FALSE и не возвращать самые последние проверки, проверив, что book_check_outs - ноль или нет. Rails предоставляет метод с именем blank? который называет оба ноль? и пусто?
def checked_out
!book_check_outs.blank?
end
Я люблю Ruby:)