Question

J'ai un modèle d'entité et je veux afficher les connexions entre les entités. -à-dire, l'entité 1 est reliée à l'entité 2.

Ma pensée, en ce moment, est de créer une jointure modèle entre les deux appelé Connection et le faire fonctionner comme un rails traditionnels table de jointure. À l'exception ont les colonnes soient entity_one_id et entity_two_id, puis établir un grand nombre à plusieurs entre l'entité et de la connexion.

Cela semble être une façon vraiment pas-élégante de le faire. Je me demandais si quelqu'un avait une meilleure idée? Peut-être quelque chose de plus que des rails-esque je ne suis pas voir?

Était-ce utile?

La solution

C'est la façon la plus commune de le faire. Si une entité n'est jamais connecté à un autre modèle, vous pouvez utiliser une liste chaînée, structure arborescente.

Consultez Ryan Bates Railscast sur les modèles d'auto-adhésion . Il traite d'un réseau comme système social, mais il a encore des principes dont vous aurez besoin et fournit un excellent point de départ

Autres conseils

Vous pouvez utiliser cette implémentation:

class User < ActiveRecord::Base
  has_many :friends, :through => :friendships, :conditions => "status = 'accepted'"
  has_many :requested_friends, :through => :friendships, :source => :friend, :conditions => "status = 'requested'", :order => :created_at
  has_many :pending_friends, :through => :friendships, :source => :friend, :conditions => "status = 'pending'", :order => :created_at
  has_many :friendships, :dependent => :destroy
end


class Friendship < ActiveRecord::Base
   belongs_to :user
   belongs_to :friend, :class_name => "User"
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top