0

我正在尝试开发我的第一个 Rails 应用程序,在我开始实际实施我的想法之前,我希望能在我的关联规划方面获得一些帮助。

我的应用程序将成为一个教育工具,并且我有一些需要实现的基本功能。我希望有可以注册和创建课程的学生。在这些课程中,将有一个用户是老师,其余的是学生。课程中将包含教师创建的作业,用户需要提交作业。这些是基础。最终我想添加更多功能,但现在我只需要设置基础。

到目前为止,这是我对关联应该是什么样子的想法:

class User < ActiveRecord::Base
    has_many :enrollments
    has_many :courses, :through => :enrollments
end

class Course < ActiveRecord::Base
    has_many :enrollments
    has_many :users, :through => :enrollments
end

class Enrollment < ActiveRecord::Base
    belongs_to :user     # foreign key - user_id
    belongs_to :course   # foreign key - course_id
end

但是,目前我遇到了如何正确处理其余关联的经验不足的问题。我可能会破解一些东西,但我更愿意在第一次时尽可能做到最好。

我如何处理与作业和提交相关的关联?据推测,学生的提交应该属于他们,但它也与班级内的作业特别相关。作业源自课程,但也与用户密切相关。

最后,处理用户和他们创建的类之间关系的最佳方式是什么?用户创建课程。那门课属于他们吗?我是否应该在课程表中添加一列来存储创建者的 ID?等等。

谢谢您的帮助。

4

1 回答 1

3

建议:您可能希望将 Teacher 和 Student 模型分开,因为您很可能有与每个相关的不同操作(虽然它们共享一些属性,但它们在您的模型中确实是不同的实体,例如,您可能想要一门课程中只有一名教师教学。)您可以从具有共享属性和身份验证的用户模型中派生教师模型和学生模型。

现在回答你的问题:

如果您想让创建课程的学生保持关联,那么 creator_id 就是我要走的路。(如果教师也可以创建课程,则从共享用户模型中派生学生和教师会有所帮助)

作业和提交:您几乎已经用文字定义了它。这是代码。[如果一个课程内的不同学生可以得到不同的作业,那么你才想在学生和作业之间建立直接关联,否则,使用直通关联]

class User < ActiveRecord::Base
    has_many :enrollments
    has_many :courses, :through => :enrollments
    has_many :assignments, :through => :courses
    has_many :submissions
end

class Course < ActiveRecord::Base
    has_many :enrollments
    has_many :users, :through => :enrollments
    has_many :assignments
end

class Enrollment < ActiveRecord::Base
    belongs_to :user     # foreign key - user_id
    belongs_to :course   # foreign key - course_id
end

class Assignment < ActiveRecord::Base
    belongs_to :course
    has_many :submissions
end

class Submission < ActiveRecord::Base
    belongs_to :assignment
    belongs_to :user
end
于 2012-06-20T23:14:24.680 回答