Если у вас действительно есть проблема с этим, вы должны использовать ссылочную целостность в вашей базе данных.
Если вы должны вызывать методы для nil, которые могут существовать или не существовать, или выдавать какую-то ошибку, вы должны использовать либо проверку а-ля
> nil.id if nil
=> nil
или Object#try
(который в настоящее время является частью ActiveSupport, я верю?), Будьте осторожны - я считаю, что это своего рода запах кода.
> nil.try(:id)
=> nil
Это, как говорится, менее неприятно, чем модифицировать NilClass, чтобы сделать что-то неожиданное, подумать о том, чего ожидает новый разработчик, который должен был работать над вашим проектом.