Я устал от захвата для ноля при поиске зависимой записи, когда большую часть времени возврат 0 сделает приятно. Какая проблема - я создающий для меня путем добавления "идентификатора" к NilClass таким образом
class NilClass
def id
0
end
end
Каковы непреднамеренные последствия могли бы быть? Я знаю о, существует? (), но так или иначе думал, что это могло бы быть более чисто.
Ваши мысли?
Если у вас действительно есть проблема с этим, вы должны использовать ссылочную целостность внутри своей базы данных.
Если вы должны вызвать методы с нулевым значением, которые могут существовать или не существовать, или вывести какую-то ошибку, вы должны использовать проверку а-ля
> nil.id if nil
=> nil
или Object # try
(который является частью ActiveSupport в настоящее время верю?), будьте осторожны - я считаю, что это что-то вроде запаха кода.
> nil.try(:id)
=> nil
При этом, это меньше запах, чем изменение NilClass, чтобы сделать что-то неожиданное, подумайте о том, чего ожидать новый разработчик, который должен был работать над вашим проектом.
Не будет ли это означать, что вам нужно будет проверить "id == 0", чтобы подтвердить существование? Не говоря уже о непредвиденных последствиях переопределения базовой функциональности Ruby - становится действительно сложно предсказать поведение других библиотек и основных API-интерфейсов Rails, когда вы возитесь с внутренними функциями языка. Я не говорю, что это просто не сработает, но трудно быть уверенным .
Я бы оставил значение по умолчанию - это работает довольно хорошо, поскольку Ruby допускает выражения «if object.association».