简短清晰的用户--博客--评论总结

描述:每个用户(user)都可以发博客(issue),不同的用户可以对一个博客做出评论(comment)

 

 

数据模型之间的关系

用户与博客之间是1对多关系,一个用户可以发多个博客,一个博客只属于一个用户

博客与评论之间是1对多关系,一个博客底下可以有多条评论,一条评论只能属于一个博客

用户与评论之间是1对多关系,一个用户可以发表多条评论,一条评论只能属于一个用户

完整的数据模型关系如下:

 

添加如上关系模型的作用:

has_many :comments

然后到 comment.rb 中添加

belongs_to :user

这样就可以使用 @comment.user.name 这样的语法了。

 

 

最终的表结构

 

 

控制器代码讲解

(1)用户控制器中都是登陆退出注册这样的代码,跟发布博客和评论一点关系没有

(2)博客控制器

(3)评论控制器

注意:一条博客可以被不同的用户评论,我们需要能够知道评论的发起人的信息,错误的办法就是给评论模型添加用户名和邮箱字段。正确的方式应该是:

用户名和邮箱这些字段已经存在用户模型之中了,我们不需要再重复定义,只要评论模型和用户模型通过user_id字段关联起来即可。而且这样做的好处是登陆会保存当前用户,所以我们发表评论时自动是当前登录用户进行发表评论。

视图代码注意事项

我们在发表评论时,实际完成评论保存到数据库中的动作代码是:

可以看到要提交上面那三个字段,但是我们的视图表单中应该只显示评论的输入框就可以了

issue_id和user_id字段不应该在视图页面手动输入,而是应该不显示这些输入框,但是点击提交还是能把这些字段的值提交给服务器。

做法如下:

必须在form_for里面添加需要提交的字段名称,而对于不需要在视图中显示但又必须提交给服务器的字段我们使用hidden_field。

issue_id和user_id字段应该是自动关联的才对,因为视图里面对这些隐藏字段无法输入值,所以我们先在new里面给需要提交的字段进行赋值,然后点击提交就会将隐藏字段和输入字段的值一起进行提交。

 

转载于:https://www.cnblogs.com/blueColdFire/p/5540026.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值