2011-01-18 23 views
5

Rails 3 Bir Varlık modeli var ve varlıkları arasındaki bağlantıları göstermek istiyorum. yani, Varlık 1 Varlık 2.Kendine referans modelleri

Benim düşünce bağlanır, hemen şimdi, iki adlandırılan Bağlantısı arasındaki bir katılmak model oluşturmak ve geleneksel raylar masaya katılmak gibi o iş sahip olmaktır. sütunlar entity_one_id ve entity_two_id çıkarılmamasını dışında, daha sonra Varlık ve Bağlantı arasında çok-çok ilişki kurmak.

Bu bunu yapmak için gerçekten-zarif değil yol gibi görünüyor. Kimsenin daha iyi bir fikri olup olmadığını merak ediyordum? Belki daha görmediğim raylar-esque bunu yapmak için, en yaygın yolu var

cevap

8

. Bir varlık yalnızca başka bir modele bağlıysa, bağlantılı liste, ağaç benzeri bir yapı kullanabilirsiniz.

atın Ryan Bates' Railscast on self-joining models. Bu bir sosyal ağ benzeri sistemiyle ilgilenir, ama yine de bu uygulamayı kullanabilirsiniz

1

harika bir başlangıç ​​noktası ihtiyacınız ilkeleri vardır ve sunar:

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 
+3

Eğer Ryan'ın Railscast çaldığı uygulanmasını? :) Ben onu aldım nereye – sethvargo

+3

Nitekim ben hatırlamıyorum, ama kesinlikle haklısın :) – apneadiving