apropriado repetir dados em modelos para satisfazer o uso da lei do deímetro em coleçõe

Este é um exemplo artificial, digamos que quero listar a população de um país em que uma pessoa tem um amigo, aqui estão duas configurações abaixo. Seria melhor repetir os dados nos modelos?

Me disseram que oLei de Demeter é importante seguir, o exemplo é que você diz a um cachorro para passear, é loucura ordenar que suas pernas ande

a minha inexperiência (noob), descobri que a consulta seria muito mais fácil quando os modelos repetem os dadoPeople.where(:country => friend.country) vs coleções nas quais existem associações encadeadas (que até agora eram impossíveis):People.where(:city => { :county => { :region => { :country => friend.city.county.region.country }}}) (Ajudaria realmente este noob aqui a entender o conceito, se você pudesse imaginar a configuração e a sintaxe correta de LoD, espero realmente não ter usado um exemplo que não tenha nada a ver com a Lei de Demeter). Tentei aplicar LoD viadelegate e me disseram que ainda estou encadeando (o que sou), a única solução em que posso pensar é repetir dados que podem ser acessíveis por meio de associaçõe

Mas eu odeio repetir dados! Isso se deve ao fato de seguir o tutuorial do DHH no Rails, onde recriamos o twitter, ele mostrou como é bom criar relacionamentos versus repetir dado

s dados repetidos devem ser adequados para deixar as associações menos encadeada

Modelos, repetindo dados

class Country < ActiveRecord::Base    
  has_many :regions    
  has_many :counties    
  has_many :cities    
  has_many :people
end

class Region < ActiveRecord::Base
  has_one :country
  has_many :counties
  has_many :cities    
  has_many :people
end

class County < ActiveRecord::Base
  has_one :country
  has_one :region
  has_many :cities    
  has_many :people
end

class City < ActiveRecord::Base
  has_one :country
  has_one :region
  has_one :county    
  has_many :people
end

class Person < ActiveRecord::Base
  has_one :country
  has_one :region
  has_one :county    
  has_one :city
  has_many :relationships
  has_many :friends, :through => :relationships
end

odelos VS com associações encadead

class Country < ActiveRecord::Base    
  has_many :regions   
end

class Region < ActiveRecord::Base
  belongs_to :country
  has_many :counties
end

class County < ActiveRecord::Base
  belongs_to :region
  has_many :cities
end

class City < ActiveRecord::Base
  belongs_to :county
end

class Person < ActiveRecord::Base
  belongs_to :city
end

questionAnswers(3)

yourAnswerToTheQuestion