导入
评论结构
设置你的评论模型。
接下来,你的应用需要处理用户评论。为此,你需要设置一个与 Link 类似结构的 Comment 模型。
你可以运行以下命令来为 Comment 模型生成基础代码结构:
1rails g scaffold Comment body:text link_id:integer:index user:references
执行该命令后,会生成一个迁移文件 db/migrate/<日期时间>_create_comments.rb,内容如下:
1class CreateComments < ActiveRecord::Migration[5.2] 2 def change 3 create_table :comments do |t| 4 t.text :body 5 t.integer :link_id 6 t.references :user, foreign_key: true 7 8 t.timestamps 9 end 10 add_index :comments, :link_id 11 end 12end
user:references 会在数据库中创建一个列,列名以模型名称(这里是 user)结尾并加上 _id。在本例中,t.references 会创建一个 user_id 列,作为指向 user 表中 id 的外键,并为其自动添加索引(回顾前面讲过的索引)。
这将允许你使用如 @comment.user 这样的命令来获取某条评论的发布者。一旦建立了关联关系,就可以通过该方式访问与 user 相关的所有方法。
add_index 这一行的作用与你在 links 和 user_id 上的操作类似。建立适当的关联后,它将支持诸如 @comment.link 以及 @link.comments 这样的操作。
注意:
:references和:index都会在表中创建索引。在之前的练习中,links没有使用:references,是为了后续挑战的需要。你可以查看db/schema.rb文件,了解当前数据库的结构以及已创建的索引情况。
除了迁移文件外,还会自动生成标准的控制器和视图结构。