2016-04-11 14 views
0

Tablo 'kullanıcıları' var ama bir kullanıcı başka bir kullanıcının yöneticisi olabilir, bir kullanıcı diğer birçok kullanıcının yöneticisi olabilir, bu yüzden bire-bir ilişki ve sadece bir tablo içerir . heres yaklaşımım:Foreign_key işaretleme aynı tabloya nasıl eklenir?

1. 'manager_id' (gerçekten başka bir kimliği değiştirir) sütunu kullanıcı tablosuna ekledim.

Kullanıcı modeli sınıfında 2.I've tanımlanan ilişki i onun tüm güzel başka kullanıcıların id biri kullanıcıların manager_id 'ayarlarsanız

belongs_to :manager, foreign_key: 'manager_id',class_name:'User' 
    has_many :minions, class_name:'User' 

Şimdi, raylar konsolda söylüyorlar. Ancak 'user.manager' veya 'user.minions' gibi yöntemleri kullanmaya çalışırsam, bu yöntemlerin tanımlanmadığını söyler. Yanlış mı gittim? Bu sadece ben yukarıdaki açıklamadan anlaşılmaktadır şeyin bir kroki, çoğaltılabilir edilir

class User < ActiveRecord::Base 
    self.inheritance_column = :child_class 
    has_many :minions, :foreign_key => :parent_id, :as => :parent 
    belongs_to :parent, :polymorphic => true 
end 

:

+0

Tam olarak hata iletisi nedir? – Pavan

+0

NoMethodError: # için undefined method 'minions'> – EasternDude

+0

Sınıfın kendisiyle değil, bir sınıf örneğiyle yapmalısınız. User.find (1) .minions' veya 'User.find (1) .manager' – Pavan

cevap

0

sana olarak yapılabilir kendine miras uygulamak istiyorlar.

+0

oldukça değil. Sorun şu ki, kullanıcı ilişkileri alanı yüklü değil. Test dummy sınıflarında aynı şeyi EXACT yaptım ve işe yarıyor! Ayrıca, bunu daha açık yapmak için, sınıfım var. 'Kullanıcı_kimliği' sütununa sahip olan ve kullanıcıyla ilgili olan kullanıcı: **** Kullanıcı adı: foreign_key: 'user_id', class_name: 'User' ** ** şimdi bir konsolda eğer objektif.kullanıcı ise doğru kullanıcı döndürüyor. Ancak, kullanıcı hesabında tanımlanmış olsa bile: **** has_many: amaçları **** 'user1.objectives' gibi bir şey yapmaya çalışırsam, yine tanımlanmamış bir hata atar ... Bu neden olur? – EasternDude

İlgili konular