Ste*_*aly 33 ruby ruby-on-rails scaffolding
嗨,我是Ruby on Rails的新手.我正在尝试创建一个小型博客网站.我有两张桌子帖子和评论.每篇博文都会有很多评论.我使用这些命令生成表.
rails g scaffold Post title:string body:text author:string
rails g scaffold Comment body:string author:string
Run Code Online (Sandbox Code Playgroud)
现在我想将关系添加到模型类中.我添加has_many :comments到Post类和belongs_to :postComment类.但是,当我尝试调用时,post.comments我得到一个运行时错误说SQLException: no such column: comments.post_id.我应该创建一个迁移并在Comment下添加post_id,还是有办法在脚手架中实现这个目的?
Jam*_*ieD 140
Scaffold实际上提供了一种生成关系的方法,您应该使用:references数据类型
rails g scaffold Comment body:string author:string post:references
Run Code Online (Sandbox Code Playgroud)
这将为comments表生成一个迁移,其中包含post_id字段和索引.生成器也将添加belongs_to :post到Comment模型中.
然而,它不会产生关系的反面,因此您需要添加
has_many :comments
Run Code Online (Sandbox Code Playgroud)
自己去邮政模特.如果这是您需要的东西,您还需要添加嵌套资源路由,因为生成器无法处理此问题.
你肯定是在正确的轨道上.如果post_id在生成Comment脚手架时添加列,则您的关系将起作用(尽管您仍需要添加has_many :comments和belongs_to :post)
所以更新的生成器调用看起来像这样:
rails g scaffold Comment body:string author:string post_id:integer
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20781 次 |
| 最近记录: |