【Ruby on Rails全栈课程】4.2 评论功能实现(一)--数据表的创建

简介: 1、详情页面功能描述(1)点击帖子标题/帖子内容,进入帖子详情页面,评论框在详情页面最下面。(2)点击详情页面的评论按钮,页面定位到评论框。(通过锚点定位)(3)点击每个评论下面的回复按钮,在该评论下面出现回复评论框,回复变成取消回复,点击取消回复,收起评论框。用js控制。(4)如果评论被删除,评论内容展示为「该评论已删除」,该评论回复按钮隐藏,该评论下面的回复可以正常显示和回复(5)每个评论回复的条数最多显示两条,多于两条,回复下面会显示「点击查看更多回复」

1、详情页面功能描述


(1)点击帖子标题/帖子内容,进入帖子详情页面,评论框在详情页面最下面。


(2)点击详情页面的评论按钮,页面定位到评论框。(通过锚点定位)


(3)点击每个评论下面的回复按钮,在该评论下面出现回复评论框,回复变成取消回复,点击取消回复,收起评论框。用js控制。


(4)如果评论被删除,评论内容展示为「该评论已删除」,该评论回复按钮隐藏,该评论下面的回复可以正常显示和回复


(5)每个评论回复的条数最多显示两条,多于两条,回复下面会显示「点击查看更多回复」


2、创建comments表,来保存评论,表结构如下:


字段解析:


re_comment_id字段


设计这个字段是为了获取某个评论(as_type为0的评论)下面的所有回复


re_reply_id字段


设计这个字段是为了找到被回复的as_type为1的评论id,我们通过这个被回复的评论

id,找到该条评论,从而找到对应的客户,显示在页面上


3、执行命令创建comments表


#产生映射文件
/vagrant/data_symtem$ rails g model comment account_id:integer post_id:integer status:integer content:text as_type:integer re_post_id:integer re_account_id:integer
#系统返回信息
   create    db/migrate/20181127085433_create_comments.rb
   create    app/models/comment.rb
   invoke    test_unit
   create      test/models/comment_test.rb
   create      test/fixtures/comments.yml
#将映射文件映射到数据库中
/vagrant/data_symtem$ rake db:migrate
#系统返回信息
== 20181127085433 CreateComments: migrating ===================================
-- create_table(:comments)
  -> 0.0150s
== 20181127085433 CreateComments: migrated (0.0164s) ==========================


4、修改字段名称:


(1)运行完rake db:migrate之后,突然发现有两个字段名输入错误,re_post_id、re_account_id,分别应为re_comment_id,re_reply_id。这时,需要先在终端运行rails g migration RenameRePostIdForComment


RenameRePostIdForComment这个名称不是固定的,ChangeRePostIdForComment和RenameRePostIdToComment都是可以的,但是要保证名称的唯一,并且能通过名称判断你改了哪个表的哪个字段。


#产生映射文件
/vagrant/data_system$ rails g migration RenameRePostIdForComment
#系统返回信息
Running via Spring preloader in process 4235
invoke  active_record
create    db/migrate/20181128074435_rename_re_post_id_for_comment.rb


(2)上面的操作产生了映射文件,


db/migrate/20181128074435_rename_re_post_id_for_comment.rb,打开sublime代码编辑器,在db/migrate文件夹下找到这个文件,粘贴下面代码,保存文件


def change
  rename_column :comments, :re_post_id, :re_comment_id
  rename_column :comments, :re_account_id, :re_reply_id
end

(3)我们运行rake db:migrate迁移一下修改后的映射文件,将映射文件映射到数据库中。

/vagrant/data_system$ rake db:migrate
#系统返回信息
== 20181128074435 RenameRePostIdForComment: migrating =========================
-- rename_column(:comments, :re_post_id, :re_comment_id)
   -> 0.0270s
-- rename_column(:comments, :re_account_id, :re_reply_id)
   -> 0.0271s
== 20181128074435 RenameRePostIdForComment: migrated (0.0572s) ================


这样re_post_id、re_account_id字段名字,分别被修改为re_comment_id,re_reply_id


(4)扩展


A、如果某个字段的类型不小心填错了,比如comments表中的post_id字段的integer类型写成了string类型。首先在命令行运行rails g migration

ChangePostIdForComment,产生映射文件后,在映射文件中添加下面代码:


change_column :comments, :post_id, :string, default: "0"


B、如果某个字段本不需要添加,需要删除这个字段,比如comments表中需要删除掉as_type字段。首先在命令行运行rails g migration

DeleteAsTypeForComment,产生映射文件后,在映射文件中添加下面代码:


remove_column :comments, :as_type


目录
相关文章
|
3月前
|
前端开发 测试技术 数据库
使用Ruby on Rails进行快速Web开发的技术探索
【8月更文挑战第12天】Ruby on Rails以其高效、灵活和易于维护的特点,成为了快速Web开发领域的佼佼者。通过遵循Rails的约定和最佳实践,开发者可以更加专注于业务逻辑的实现,快速构建出高质量的Web应用。当然,正如任何技术框架一样,Rails也有其适用场景和局限性,开发者需要根据项目需求和个人偏好做出合适的选择。
|
3月前
|
前端开发 测试技术 API
揭秘Ruby on Rails的神秘力量:如何让你的Web应用飞起来?
【8月更文挑战第31天】Ruby on Rails(简称RoR)是一个基于Ruby语言的开源Web应用框架,自2005年发布以来,因简洁的语法、强大的功能和高效的开发效率而广受好评。RoR采用MVC架构,提高代码可读性和可维护性,拥有庞大的社区和丰富的库支持。本文通过示例代码展示其强大之处,并介绍RoR的核心概念与最佳实践,帮助开发者更高效地构建Web应用。
42 0
|
3月前
|
前端开发 API C++
在Ruby世界中寻找你的Web框架灵魂伴侣:Rails vs Sinatra
【8月更文挑战第31天】在Ruby的世界里,选择Web框架如同挑选衣物,需根据场合和需求。Rails与Sinatra是两大热门框架,前者以其“约定优于配置”理念和全面的功能成为企业级应用的首选;后者则以轻量级和灵活性著称,适用于快速原型开发和小规模应用。通过对比两者特性,如Rails的MVC架构与Sinatra的简洁API,我们可以看到它们各有所长。选择合适的框架,如同找到旅途中的最佳伙伴,让开发之路更加顺畅愉悦。这场探索之旅教会我们,没有绝对的好坏,只有最适合的选择。
34 0
|
3月前
|
安全 前端开发 数据安全/隐私保护
如何在Ruby on Rails中打造坚不可摧的OAuth认证机制
【8月更文挑战第31天】在构建现代Web应用时,认证与授权至关重要。本文介绍如何在Ruby on Rails中实现OAuth认证,通过使用`omniauth`和`devise` gems简化流程。首先安装并配置相关gem,接着在`User`模型中处理OAuth回调,最后设置路由及控制器完成登录流程。借助OAuth,用户可使用第三方服务安全地进行身份验证,提升应用安全性与用户体验。随着OAuth标准的演进,这一机制将在Rails项目中得到更广泛应用。
48 0
|
4月前
|
SQL 安全 数据库
Ruby on Rails 数据库迁移操作深度解析
【7月更文挑战第19天】Rails 的数据库迁移功能是一个强大的工具,它帮助开发者以版本控制的方式管理数据库结构的变更。通过遵循最佳实践,并合理利用 Rails 提供的迁移命令和方法,我们可以更加高效、安全地管理数据库结构,确保应用的稳定性和可扩展性。
|
6月前
|
Ruby
|
6月前
|
Ruby
|
6月前
|
JSON 数据格式 Ruby
|
6月前
|
调度 Ruby
|
6月前
|
存储 JSON 数据格式