我正在设计一个应用程序来为课堂创建目标 - 目前,数据关系是这样建模的
我知道,由于缺乏经验,我可能遇到问题,现在我开始 - 特别是在我的路线文件中 - 但也只是为了一般地组织网站和数据关系。
当用户注册时,他们会添加student_group(或类),将其填充给学生,然后添加主题。之后他们为每个主题添加目标 - 尽管 也应该是student_group,学生甚至用户的目标。我在考虑像this这样的东西 - 但是通过关系,它会更好吗?
现在,我只是真正完成了User,Student_group和Student模型的工作,这些都非常简单。用户有许多student_groups,student_group有很多学生。在我继续之前,我想要第二个意见,所以我不必最终回去做事。谢谢!
答案 0 :(得分:1)
我想你可能想得太远了。一旦您的应用程序围绕当前的数据模型构建,您就会更好地了解是否要扩展它以包含不属于学生主题的目标概念。如果您确定它是,那么将目标归属于主题,学生或用户将非常简单。此时,您还可以执行类似
的操作Class Student
has_many :personal_goals, class_name: "Goal"
has_many :goals, through: :subjects
def all_goals
goals + personal_goals
end
可能有一种更优雅的方式来模拟最后的关系。你需要超越它吗?谈论一个有自己目标的学生团体是否有意义?我不知道。
答案 1 :(得分:0)
当我完成你的数据库设计时,我发现你应该使用不同类型的关系,这是rails提供给我们的。根据我的知识,我尽力设计你的架构。你应该在我的模型中定义关系,如下所示。任何好的修改都非常感谢。
User
has_many :student_groups
has_many :students, through: :student_groups
has_many :goals, as: :goalable
StudentGroup
belongs_to :user
has_many :students
has_many :goals, as: :goalable
Student
belongs_to :student_group
has_many :subjects
has_many :characteristics
has_many :goals, as: :goalable
Characteristic
belongs_to :student
Goal
belongs_to :goalable, polymorphic => true
我已在您的架构中定义了一些多态关联。如果您需要任何与这些关联相关的参考。访问http://guides.rubyonrails.org/association_basics.html
希望它会对你有所帮助。感谢。