rails中的关系建议/关联逻辑

时间:2013-07-24 17:30:56

标签: ruby-on-rails

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

enter image description here

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

当用户注册时,他们会添加student_group(或类),将其填充给学生,然后添加主题。之后他们为每个主题添加目标 - 尽管 也应该是student_group,学生甚至用户的目标。我在考虑像this这样的东西 - 但是通过关系,它会更好吗?

现在,我只是真正完成了User,Student_group和Student模型的工作,这些都非常简单。用户有许多student_groups,student_group有很多学生。在我继续之前,我想要第二个意见,所以我不必最终回去做事。谢谢!

2 个答案:

答案 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

希望它会对你有所帮助。感谢。