Rails Associations审查和解释

时间:2015-04-13 03:35:13

标签: ruby-on-rails ruby associations data-modeling

目前我正在做Odin Project的Ruby on Rails轨道(直到几天才知道这样的资源可用。)它有几个场景,他们想要您可以为它们编写适当的数据建模和关联。不幸的是,根据我能够找到的内容,他们没有为他们提供的4种方案提供任何答案密钥。我只是想知道是否有人可以查看我的答案并指导我直接找到我做错了和/或对,如果那不是太多问题。

这是Odin Project的四个场景

  
      
  1. 您正在构建一个在线学习平台(就像这样!)。你'已经   有很多不同的课程,每个都有标题和描述,和   每门课程都有多节课。课程内容包含标题   和正文。

  2.   
  3. 您正在为您网站上的新用户构建配置文件标签。你是   已存储用户的用户名和电子邮件,但现在您想要   收集人口统计信息,如城市,州,国家,年龄和   性别。想一想 - 用户应该有多少个配置文件?你好吗?   将此与用户模型相关联?

  4.   
  5. 您想要构建一个虚拟插板,这样您就可以拥有用户   可以创造"引脚的平台"。每个引脚都包含一个URL   网络上的图像。用户可以对引脚发表评论(但不能评论   注释)。

  6.   
  7. 您想构建一个像Hacker News这样的留言板。用户可以发帖   链接。其他用户可以评论这些提交或评论   评论。你如何确保评论知道在哪里   它居住的等级?

  8.   

这是我想出的。不幸的是,第四个完全让我难过。

1. table - course
    t.string :title
    t.text :description
    has_many :lessons

table - lesson
    t.string :title
    t.text :body
    belongs_to :course
    foreign key :course_id

2. AddDemo_to_User city:string state:string country: string age:integer gender:string

3. table - pin
     url:string
     comment:text
     user has_many :pins
     pin belongs_to :user
     foreign_key :user_id

1 个答案:

答案 0 :(得分:0)

第四个是相当开放的。它对你的要求是层次结构。数据库中的每条评论记录都需要知道其父级是谁。

简单的方法是使用称为邻接列表的东西。

posts
  url:string
  user_id:integer

comments
  post_id:integer
  parent_id:integer # this will point to the parent comment of this comment. If it's null, then this is a 'root' comment, meaning it's not a comment of a comment
  message:text

这只是跟踪层次结构的一种方法。您可以在此处了解更多信息:What are the options for storing hierarchical data in a relational database?