本博客用来记录学习资源聚合平台的整个开发过程,前两周主要做了需求分析和设计,忘记写博客了,从今天开始记录
首先,我负责的是课程模块的开发,先说一下这几天我做的模型的设计,主要有以下几个模型:课程(course)、知识(knowledge)、回复(reply),知识又分为三种:专栏(blog)、提问(question)、资源(resource),这三种采用单表继承的方式实现,具体来说就是利用一个type字段来区别类型,具体的实现如下:
get_all_entry方法通过输入参数来分别返回三种类型知识的全部记录
课程的model如下:
字段名 | 类型 |
course_name | string |
knowledge | knowledge |
teacher | teacher_relationship |
keywords | keyword |
其中,knowledge、teacher、keywords为has_many的关系
knowledge的model如下:
字段名 | 类型 |
course | course |
user | user |
type | string |
content | string |
good(点赞数) | integer |
bad(踩的数量) | iinteger |
updated_time | timestamps |
reply的model(还没具体想好,等之后再做)
除此之外,这几天还搭了一下课程首页的架子,效果如下:
在通过在route.rb中定义路径,可以完成页面的跳转:
这里我遇到了一个问题:
当我想跳转到knowledges/question_new界面时出现了问题,原因是路由的匹配是从上到下的,当前面有一条匹配时就去跳转了,这时就会将question_new认为是一个id,去数据库查询,发现没有,报错,解决方法如下:
先利用except函数去除show的匹配,这样就不会去匹配id了,我们在下面单独再写一条路由规则,并且限定id的输入必须是数字,这样就可以进行更细粒度的控制,从而完成正确路由
今天之前采用的编辑器是RubyMine,之后转用Cloud9云编译器,以便实现更好的管理,并且可以忽略本地环境,今天为平台的转移调试了环境。
准备在明天进行问题模块的发布的编程,并且对前端进行一些美化,使用bootstrap框架完成美化工作
总体来说,这几天主要完成了页面的逻辑跳转,建立了主要的模型,并且对Ruby on Rails的结构有了一些简单的了解,简单来说,view层只是负责显示的,而controller主要是监视界面,将页面的请求发给数据库,数据库以模型的数据结构来返回结果,所以主要的操作应该集中在controller层,这是我接下来几天需要构建的,即从前端得到数据,操作数据库得到结果并显示回来。下面这张图形象的说明了Rails的MVC结构:
下面是今天项目的github地址:https://github.com/mottled233/SDU-Learning-resource-aggregation-platform.git中的course_part2分支