Определения NilClass

Я устал от захвата для ноля при поиске зависимой записи, когда большую часть времени возврат 0 сделает приятно. Какая проблема - я создающий для меня путем добавления "идентификатора" к NilClass таким образом

class NilClass
  def id
    0
  end
end

Каковы непреднамеренные последствия могли бы быть? Я знаю о, существует? (), но так или иначе думал, что это могло бы быть более чисто.

Ваши мысли?

1
задан Peter 25 July 2010 в 21:49
поделиться

2 ответа

Если у вас действительно есть проблема с этим, вы должны использовать ссылочную целостность внутри своей базы данных.

Если вы должны вызвать методы с нулевым значением, которые могут существовать или не существовать, или вывести какую-то ошибку, вы должны использовать проверку а-ля

 > nil.id if nil
=> nil

или Object # try (который является частью ActiveSupport в настоящее время верю?), будьте осторожны - я считаю, что это что-то вроде запаха кода.

 > nil.try(:id)
=> nil 

При этом, это меньше запах, чем изменение NilClass, чтобы сделать что-то неожиданное, подумайте о том, чего ожидать новый разработчик, который должен был работать над вашим проектом.

1
ответ дан 2 September 2019 в 22:46
поделиться

Не будет ли это означать, что вам нужно будет проверить "id == 0", чтобы подтвердить существование? Не говоря уже о непредвиденных последствиях переопределения базовой функциональности Ruby - становится действительно сложно предсказать поведение других библиотек и основных API-интерфейсов Rails, когда вы возитесь с внутренними функциями языка. Я не говорю, что это просто не сработает, но трудно быть уверенным .

Я бы оставил значение по умолчанию - это работает довольно хорошо, поскольку Ruby допускает выражения «if object.association».

1
ответ дан 2 September 2019 в 22:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: