向现有模型添加新的has_many关系

时间:2013-04-08 11:27:26

标签: ruby-on-rails ruby-on-rails-3 migration has-many

我想在我的应用程序&中添加一个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&amp;之间建立一种关系。每个photos 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

&安培;然后跑...

rake db:migrate

1 个答案:

答案 0 :(得分:6)

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

如果您已经迁移了所有内容并希望添加索引make do:

 rails g migration AddIndexToUserIdToPhotos

并在里面添加索引列:

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