Насколько я могу судить, вы создаете здесь вспомогательный метод.
Я должен определить метод приложения, который вы затем сможете использовать в своих представлениях.
Преимущество: оно чисто объектно-ориентированное. Приложение должно знать, есть ли у него рабочее место или нет.
Во-вторых, используйте try : он будет пытаться использовать данный метод или блок только в том случае, если получатель не равен nil, иначе он возвращает nil.
Итак:
class Application
def has_work_location?
self.contact.try { |c| c.work_location.present? }
end
end
Обратите внимание, что это использование try
работает только в rails 3.2, если вы используете более старую версию, она не принимает блок. Кроме того, nil.present?
работает и возвращает false, поэтому вы можете написать
def has_work_location?
self.contact.try(:work_location).present?
end
Примечание: поскольку мы добавляем метод в приложение, мы можем смело предполагать application
, поэтому нам нужно только проверить, что contact
существует больше.
Затем вы можете написать:
<%= @application.contact.workplace if @application.has_work_place? %>
или что-то подобное. Надеюсь, это поможет.