0

我正在设计一个应用程序来为课堂创建目标 - 目前,数据关系是这样建模的

在此处输入图像描述

我知道由于缺乏经验,我可能会遇到问题,现在我开始 - 特别是在我的路线文件中 - 但也只是为了一般地组织站点和数据关系。

当用户注册时,他们添加一个 student_group(或类),用学生填充它,然后添加主题。后来他们为每个科目添加了目标——尽管还应该有一个学生组、一个学生甚至用户的目标。我在想这样的事情——但是作为一个has_many,通过关系会更好吗?

现在,我只真正完成了 User、Student_group 和 Student 模型的工作,这些都是相当简单的。一个用户有很多学生组,一个学生组有很多学生。但是,在继续之前,我想征求第二意见,这样我就不必最终回去重新做事。谢谢!

4

2 回答 2

1

我想你可能想得太远了。围绕当前数据模型构建应用程序后,您将更清楚是否要扩展它以包含不属于学生主题的目标概念。如果您决定这样做,那么让目标属于某个主题、学生或用户将非常简单。那时,您还可以执行类似的操作

Class Student
  has_many :personal_goals, class_name: "Goal"
  has_many :goals, through: :subjects

  def all_goals
    goals + personal_goals
  end

可能有一种更优雅的方式来模拟最后的关系。你需要超越吗?谈论一个有自己目标的学生团体是否有意义?我不知道。

于 2013-07-24T18:49:10.717 回答
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

希望它会帮助你。谢谢。

于 2013-07-24T19:03:14.410 回答