O delegate do Rails cria um método que repassa a chamada para outro objeto. Com prefix: true, o nome do método ganha o nome do destino:
class User < ApplicationRecord
belongs_to :company
delegate :name, to: :company, prefix: true
end
user.company_name
# => "Acme"
É o mesmo que user.company.name, mas quem usa o User não precisa saber que existe uma Company no meio.
A pegadinha aparece quando a associação é nil:
User.new.company_name
# => DelegationError: company_name delegated to company, but company is nil
Se um usuário sem empresa é um caso válido, use allow_nil: true, e o método devolve nil em vez de levantar erro:
delegate :name, to: :company, prefix: true, allow_nil: true
User.new.company_name
# => nil
O to: recebe o nome de um método, não de um model: pode ser uma associação, um atributo ou qualquer método do objeto. Documentação do delegate.