Если вы хотите, чтобы он просто справлялся, вы всегда можете реализовать свой собственный method_missing
для этого класса, который просто ест вызовы и возвращает nil
:
class Company
def method_missing(*args)
nil
end
end
Это может скрыть ряд проблем, поэтому вам, вероятно, следует быть осторожным при выполнении подобных действий.
Вы также можете создать расширение, которое позволит вам сделать это:
= @company.try_method(:address)
Это вернет nil
, если нет метода address
, если вы добавите это в инициализатор:
class Object
def try_method(method, *args)
respond_to?(method) ? send(method, *args) : nil
end
end
Метод try
, входящий в состав Rails, будет работать, только если метод может вернуть nil
, но не если метод не определен.