Вы можете сделать его немного короче:
financial_document.assets ? financial_document.assets.length : '0'
потому что
financial_document.assets == !financial_document.assets.nil?
но в целом ИМХО тут не менее повторяющийся путь, только различные обходные пути. (И это одна из вещей, которые мне не очень нравятся в Ruby.) Вы можете убедиться, что объекты не являются нулевыми (как предлагают другие люди) - но вы не можете делать это везде. Вы можете обернуть код нулевой проверки в вспомогательные методы или в блоки begin-rescue.
Например, вместо того, чтобы добавлять метод длины к объекту nil (который ИМХО грязный хак), я бы написал вспомогательный метод - "получатель длины":
def fd_length(financial_document)
financial_document.assets ? financial_document.assets.length : '0'
end