Logo
Section 1 / 11

评论结构

设置你的评论模型。

导入

评论结构

设置你的评论模型。

接下来,你的应用需要处理用户评论。为此,你需要设置一个与 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 文件,了解当前数据库的结构以及已创建的索引情况。

除了迁移文件外,还会自动生成标准的控制器和视图结构。

结论

项目挑战:关联与路由