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