2016-04-02 30 views
0

böyle yapılandırılmış bir veritabanı ile Raylar uygulama var: database structureRaylar haritalama verileri

kullanıcı bazı deneyim bir seçer ve beklendiği gibi tüm profiller için aynı kurtardı, profiller bazı deneyim bir seçin ve beklendiği gibi tüm kaydedilir . Uzmanlık ile ilgili profilleri bulabilirim.

kullanıcı modeli:

has_and_belongs_to_many :expertises 

Uzmanlık modeli:

Şimdi
has_and_belongs_to_many :profiles 
has_and_belongs_to_many :users 

, bir kullanıcının bazı deneyim bir seçer ve aynı Faaliyetlerimiz ile tüm profilleri göstermek istiyoruz diyelim? Bunu nasıl yapacağınız hakkında bir fikrin var mı?

Bu, denetleyicide yapılabilir mi yoksa başka bir birleştirme tablosu oluşturmam gerekir mi?

cevap

1

Kullanıcı has_many :matching_profiles, :through => :expertises, class_name => "Profile", :source => :profiles sonra

sahip profillerin tüm bulmak için @user.matching_profiles yapabilirsiniz eşleşen uzmanlık en

Ayrıca Uzmanlık sınıfında

has_many :profiles, :through => :expertise_profiles, :source => :profile olması gerekir

ve has_many :expertises, :through => :user_expertises, :source => :expertise Kullanıcı sınıfında

+0

Pro'yu görüntülemek istiyorsanız Bir kullanıcının her uzmanlığına uygun dosyalar, o zaman bir denetleyici bu isteyeyim '@expertises = @ user.expertises.includes (: profiller)' @expertises aracılığıyla görüşlerini döngüde sonra '<% @ expertises.each do uzmanlık | %> <% = expertise.name%> <% = expertise.profiles.map (& ad) .join ("")% ben – mgidea

+0

her bir modele bir sütunu ismi varsayarak> % < end %> bir hata alma 'Dernek bulamadı: model Recruiter' içinde expertises_recruiter ' –

+0

da nereye bu' @ user.matching_profiles' koymak istiyorum bu yüzden bir hata alıyorum –