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

描述:每一个用户(user)均可以发博客(issue),不一样的用户能够对一个博客作出评论(comment) 数据库

 

 

数据模型之间的关系

用户与博客之间是1对多关系,一个用户能够发多个博客,一个博客只属于一个用户 服务器

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

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

完整的数据模型关系以下: orm

 

添加如上关系模型的做用: blog

has_many :comments 博客

而后到 comment.rb 中添加 it

belongs_to :user form

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

 

 

最终的表结构

 

 

控制器代码讲解

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

(2)博客控制器

(3)评论控制器

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

用户名和邮箱这些字段已经存在用户模型之中了,咱们不须要再重复定义,只要评论模型和用户模型经过user_id字段关联起来便可。并且这样作的好处是登录会保存当前用户,因此咱们发表评论时自动是当前登陆用户进行发表评论。

视图代码注意事项

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

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

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

作法以下:

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

issue_id和user_id字段应该是自动关联的才对,由于视图里面对这些隐藏字段没法输入值,因此咱们先在new里面给须要提交的字段进行赋值,而后点击提交就会将隐藏字段和输入字段的值一块儿进行提交。

相关文章
相关标签/搜索