mindpin/eshare

知识点测试题的讨论版

Opened this issue · 2 comments

说明

1 一个测试题下有一个讨论版
2 讨论版由很多讨论组成
3 每个讨论由 纯文本,图片,代码片段组成(最少有一个)
4 讨论可以被评论,评论也是由 纯文本,图片,代码片段组成(最少有一个)
5 评论可以被回复

建模

  # 表示一个讨论
  create_table :knowledge_question_posts do |t|
    t.integer :knowledge_question_id
    t.integer :creator_id
    t.text :content # 纯文本
    t.string :image # 用 carrierwave 存储图片
    t.text :code  # 代码片段
    t.string :code_type # 代码片段类型: java javascript ruby 等等
    t.timestamps
  end

  create_table :knowledge_question_post_comments do |t|
    t.integer :knowledge_question_post_id
    t.integer :creator_id
    t.integer :reply_comment_id
    t.text :content # 纯文本
    t.string :image # 用 carrierwave 存储图片
    t.text :code  # 代码片段
    t.string :code_type # 代码片段类型: java javascript ruby 等等
    t.timestamps
  end

建模说明

两个模型中的内容字段

  content 表示纯文本
  image 表示图片
  code 表示代码片段
  code_type 表示代码片段的类型 java javascript ruby 等等

1 content, image, code 必须最少有一个是有值的
2 code 有值时,code_type 必须有值

knowledge_question_post_comments 的几种状态

普通评论

当 knowledge_question_post_comments 的字段是如下状态时,表示是一个普通评论

  knowledge_question_post_id 有值
  creator_id 有值
  reply_comment_id 没有值

回复其他评论的评论

当 knowledge_question_post_comments 的字段是如下状态时,表示是一个回复其他评论的评论

  knowledge_question_post_id 有值
  creator_id 有值
  reply_comment_id 有值

需要做的事情

1 两个模型的基础建模和校验等基本内容
2 提供以下方法

# 创建讨论
knowledge_question.posts.create(attrs)

# 创建普通评论
knowledge_question_post.main_comments.create(attrs)

# 回复评论
knowledge_question_post_comment.reply_comments.create(attrs)

# 查询一个测试题的所有讨论
knowledge_question.posts

# 查询一个 post 下的所有普通评论
knowledge_question_post.main_comments

# 查询一个评论下的所有回复评论
knowledge_question_post_comment.reply_comments
设置单一问题讨论版。(评论串)
评论串能发帖子,能回复帖子,能赞帖子和回复

帖子和评论里都能加入图片和代码段

帖子(with图片)(39赞)
 |
 |--评论(with图片)(12赞)
 |   |
 |   |---回复评论(3赞)
 |  
 |--评论(with图片)(9赞)
     |
     |---回复评论(2赞)
     |---回复评论(with 图片)(1赞)

目前系统中有一个 file_entity 模型专门存用户上传的文件

knowledge_question_posts
knowledge_question_post_comments
需要进行如下修改

remove_column :knowledge_question_posts, :image
remove_column :knowledge_question_post_comments, :image


add_column :knowledge_question_posts, :file_entity_id, :integer
add_column :knowledge_question_post_comments, :file_entity_id, :integer

图片改为存到 file_entity 模型中