2011-08-08 17 views
9

'a aittir Bir CRM uygulaması için, bir Kişisel hesap modelini doğrudan bir Hesap modeline veya bir Hesap modeliyle ilişkilendirilmiş bir Şirket modeline ilişkilendirmek istiyorum. Ayrıca, bir Adres modelini bir Şirkete veya Bir Kişiye ilişkilendirmek istiyorum. Raylar modeli bir modele veya başka bir

class Account 
    has_many :Persons 
    has_many :Companies 
end 

class Person 
    belongs_to :Account 
    belongs_to :Company 
    has_one :Address 
end 

class Company 
    belongs_to :Account 
    has_many :Persons 
    has_one :Address 
end 

class Address 
    belongs_to :Person 
    belongs_to :Company 
end 

Yani Hesap bir "kişi hesabı" ya da dernek bağlı bir "iş account" ya şöyle olacaktır: Bu aklımda ne var. Karşılıklı münhasır olurlardı. Şahsen masasında account_id ve company_id adlı yabancı anahtarları bulundurmayı planlıyorum. Aynı şekilde, Address tablosunda yabancı anahtarları person_id ve company_id olacaktır. Her durumda bir yabancı anahtar boş olacaktır.

Rails'de sorun yok mu? Aksi takdirde, herhangi bir öneri çok takdir edilecektir.

+0

. Büyük resim yanıtının ne olduğundan emin değil misiniz? – jaydel

cevap

8

Polimorfik derneklere bir göz atın. Bunun Aradığınız şey bu mudur: http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

class Account 
    belongs_to :User, :polymorphic => true 
end 

class Person 
    belongs_to :Account, :as => :User 
    belongs_to :Company 
    has_one :Address, :as => :User 
end 

class Company 
    belongs_to :Account, :as => :User 
    belongs_to :Persons 
    has_one :Address, :as => :User 
end 

class Address 
    belongs_to :User, :polymorphic => true 
end 
... 

Selamlar Sven

Eğer dernek tek tip var olduğundan emin olmak için bir model doğrulama kullanabilirsiniz
+2

Teşekkürler Sven! Tam olarak ihtiyacım olan buydu. Sadece "Rails 3 Way" de Polymorphic Dernekler hakkında okuyun. Yardımın için minnettarım. –

İlgili konular