Usando o método delegate no Rails
Tirei essa foto do quintal da minha casa. Lua em quarto crescente.
Lua em quarto crescente ocorre quando o ângulo Terra - Lua - Sol é aproximadamente reto, de modo que vemos apenas cerca da metade do disco lunar, no período em que a parte iluminada está em crescimento. No hemisfério norte, a metade direita do disco está iluminada, enquanto no hemisfério sul, a metade esquerda do disco ilumina-se durante esta fase. Fonte: Wikipedia
Como usar o método delegate no Rails
Uma coisa interessante que você pode fazer, quando estiver usando o Rails, é usar o método delegate para delegar métodos de um model para outro. Isso pode ser útil quando você tem relações de modelo complexas e deseja evitar acessar vários níveis de associação. Por exemplo, imagine que você tem um modelo de usuário chamadoUser
e outro modelo chamado Company
. Cada usuário tem uma empresa e você deseja ser capaz de acessar o nome da empresa de um usuário. Sem o uso de delegate, você teria que fazer algo como user.company.name
. Com delegate, você pode fazer algo como:
class User < ApplicationRecord
belongs_to :company
delegate :name, to: :company, prefix: true
end
Agora você pode chamar user.company_name e obter o nome da empresa.
user = User.first
user.company_name
# => "Acme"
O método delegate aceita vários argumentos, mas os mais importantes são:
- to: o nome do modelo para o qual você deseja delegar
- prefix: um prefixo opcional para o método delegado
Você pode ler mais sobre o método delegate na documentação do Rails.