2010-02-24 39 views
14

Bir yıl modeli ve bir ders modeli ile bir uygulama geliştiriyorum. Şu anda bir course_years tablosu ile bunları birleştiren bir has_and_belongs_to_many ilişkisi var, ancak courses_years tablosuna fazladan bir alan kaydetmek istiyorum.Birleştirme tablosuna fazladan veri ekleme - Raylar

Yeni alan "zorunlu" olarak adlandırılan bir boole değeridir.

Bunu yapmanın kolay veya güzel bir yolu var mı?

cevap

13

Birleşim modeline ihtiyaç duyduğunuzda özel olarak tasarlanmış bir :has_many => :through ilişkilendirmesine geçin. ActiveRecord Associations Rails Guide'da daha fazla ayrıntı var.

+0

Çok teşekkürler, takip sorularım için herhangi bir fikir var mı? http://stackoverflow.com/questions/2328273/add-fields-for-has-many-through-relationship-extra-data-rails – Jack

12

Birleşim modeli istiyorsunuz. Ben "CoursesYear" diyeceğim çünkü tablo adınızı değiştirmenize gerek yok, ancak isterseniz bu verileri başka bir modele de taşıyabilirsiniz. Normalde katılmak modeli aracılığıyla ulaşmaya

class Courses < ActiveRecord::Base 
    has_many :courses_years 
    has_many :years, :through => :courses_years 
end 

class Years < ActiveRecord::Base 
    has_many :courses_years 
    has_many :courses, :through => :courses_years 
end 

class CoursesYears < ActiveRecord::Base 
    belongs_to :course 
    belongs_to :year 
end 

Eğer (bu durumda zorunlu) özelliklerini gerektiğinde

: Modelleriniz böyle kurulum olacaktır. Belirli bir yıl için zorunlu olan tüm dersleri bulmak istiyorsanız, soru here cevaplanır.

+0

Çok teşekkürler, Seçenekler için birleştirme tablosunun adı olarak gittim. Ancak boolean değerini yeni kurs formuma eklemekte sorun yaşıyorum. Herhangi bir fikir? http://stackoverflow.com/questions/2328273/add-fields-for-has-many-through-relationship-extra-data-rails – Jack

+3

Model sınıf adları tekil biçimde olmalıdır: Dersler -> Kurs; Yıllar -> Yıl; KurslarYıllar -> CourseYear –

İlgili konular