7

我想在我的应用程序中添加一个 has_many 关系到两个现有的表/模型,我不太确定如何去做?

当我之前使用新模型执行此操作时,rails generate 命令为我处理了所有事情,只是rails generate model Photo image:string hikingtrail:references它创建了以下迁移

class CreatePhotos < ActiveRecord::Migration
  def change
    create_table :photos do |t|
      t.string :image
      t.references :hikingtrail

      t.timestamps
    end
    add_index :photos, :hikingtrail_id
  end
end

现在我想在users&photos与 each之间建立关系user has_many :photos

当我生成迁移以实现此目的时,它不包括add_index :photos, :user_id,这是我应该手动执行的操作还是以下步骤足以在我的数据库中设置此关系?

rails g migration AddUserIdToPhotos user_id:integer

这创造了...

class AddUserIdToPhotos < ActiveRecord::Migration
  def change
    add_column :photos, :user_id, :integer
  end
end

然后运行...

耙分贝:迁移

4

1 回答 1

6

建立你的关系就足够了。您可以添加索引来提高记录搜索的速度。事实上,有些人建议为所有外键建立索引。但是现在不用担心这个,我猜你不会有那么多记录来使用索引。

如果您已经迁移了所有内容并想要添加索引,请执行以下操作:

 rails g migration AddIndexToUserIdToPhotos

并在里面添加索引列:

class AddUserIdToPhotos < ActiveRecord::Migration
  def change
    add_index :photos, :user_id
  end
end
于 2013-04-08T11:38:01.153 回答