Если атрибут, который вы проверяете, всегда один и тот же, создайте метод в @parent.
def attribute_present?
@parent.child.present? && @parent.child.grandchild.present? && @parent.child.grandchild.attribute.present?
конец
В качестве альтернативы, создайте has_many :through
отношение, чтобы @parent
могло добраться до grandchild
, чтобы вы могли использовать:
@parent.grandchild.try(:attribute).try(:present?)
Примечание: present?
не только для nil, он также проверяет пустые значения, ''
. Вы можете просто сделать @parent.grandchild.attribute
, если это просто проверка на ноль