2012-10-28 66 views
3

我是比較新的的Ruby/Rails,我有以下問題:Rails的2個表,1個模型

我上的調度應用工作,並有一個型號命名類,另一個名爲ClassEntries。它們之間的關係是每個用戶每學期可以有多個類別條目,每個類別涉及一個類別。 Classes表中的每條記錄都屬於特定的大學。用戶在ClassEntries表中可以有1個學期(通常爲5)的多個條目。他們的時間表由其所有具有相同學期ID的ClassEntries組成。

我不確定我是否應該有第三個稱爲Schedule的模型,它將ClassEntries和Classes模型中的信息彙集在一起​​。我最初在PHP中編寫了這個功能,我只是使用MySQL JOIN來收集必要的信息。在Rails中,似乎應該有更好的方法來實現這一點。

在Rails中進行此操作的最佳方法是什麼?

非常感謝

+0

您的班級模型是否具有學期的知識?有很多方法可以去做你想做的事情。如果您已經編寫了PHP功能,那麼Rails的方式應該很輕鬆。 –

+0

目前我沒有學期模型。我是不是該?由於Classes表中的記錄獨立於學期或時間表,所以ClassEntries需要屬於一個學期,對吧? – Adam

+0

你說你已經在PHP中實現了這個。你的數據庫表是什麼樣的(模型和關係)任何有關這方面的信息都可以幫助我們理解你正在做什麼。我仍然有點困惑ClassEntry究竟是什麼意味着ClassEntry的含義?如果我理解正確,ClassEntry僅僅意味着用戶在特定學期上課? –

回答

1

所以,你要找的是幾乎在Rails中的關聯。

您將有以下:

def User < ActiveRecord::Base 
    has_many :course_entries 
    has_many :courses, :through => :class_entries 
end 

def CourseEntry < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :course 
end 

def Course < ActiveRecord::Base 
    has_many :course_entries 
    has_many :users, :through => :class_entries 
end 

有了這些協會成立時,Rails會允許你做這樣的事情像 some_user.coursessome_course.users,它將使通過CourseEntry的加入爲您服務。

讓我知道這是否有幫助。如果你需要我更深入地讓我知道。

+0

謝謝你。你提到course_entries和class_entries。這些可互換或不同的實體? – Adam

+0

對不起,這是一個錯字。如果該類名爲CourseEntry,那麼如果其指定的ClassEntries使用:class_entries,則應該使用:course_entries。 –