Rails Delegate

Rails Delegate

Model treba da razgovara samo sa svojim neposrednim udruženjem. Prema zakonu Demetre, ne bi trebalo da razgovarate sa svojstvom asocijacije ili asocijacijom asocijacije.

Ovde govorimo o pristupu delegata Rails-a.

LOŠ MIRIS

class class <ActiveRecord :: Baza
pripada_to:
kraj korisnika

<%= @profile.user.address %>
<%= @profile.user.city %>

Rails pruža pomoćni metod za izvršavanje delegiranja, koji koristi DSL za generisanje metoda omotača. Takođe može sprečiti metod poziva greške na nil objektu ako je dodato: allow_nil => true.

Refaktorisan

class Profile < ActiveRecord::Base
  belongs_to :user
  delegate :address, :city, :to => :user, :prefix => true, :allow_nil => true
end
<%= @profile.user_address %>
<%= @profile.user_city %>