由于我是Rails的新手,我在rails网站上关注'getting started' guide。
在6.1生成模型,我应该运行rails generate model Comment commenter:string body:text post:references
来获得评论模型。
据说,这应该包含在迁移文件中:
class CreateComments < ActiveRecord::Migration
def change
create_table :comments do |t|
t.string :commenter
t.text :body
t.references :post
t.timestamps
end
add_index :comments, :post_id
end
end
但是在我的迁移文件中,除了这一行add_index :comments, :post_id
之外,我还有其他所有内容。
相反,我在index:true
t.references :post
我似乎无法找到解释,有人可以向我解释这里发生了什么吗?因为稍后我需要使用:post_id,但在我的迁移版本中,它没有明确声明。我很困惑。
答案 0 :(得分:2)
class CreateComments < ActiveRecord::Migration
def change
create_table :comments do |t|
t.string :commenter
t.text :body
t.references :post
t.timestamps
end
add_index :comments, :post_id
end
end
和
class CreateComments < ActiveRecord::Migration
def change
create_table :comments do |t|
t.string :commenter
t.text :body
t.references :post, index: true
t.timestamps
end
end
end
将执行相同的操作,它们都会将索引添加到post_id列
您也可以稍后将索引添加到任何要添加到模型的列中的列,如
$ rails generate migration AddPartNumberToProducts part_number:string:index
将生成此代码:
class AddPartNumberToProducts < ActiveRecord::Migration
def change
add_column :products, :part_number, :string
add_index :products, :part_number
end
end
答案 1 :(得分:0)
然后将其写为t.integer :post_id
否则你可以尝试这个add_index :comments, :post