7

アプリ内の 2 つの既存のテーブル/モデルに 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

そして実行...

rake db:移行

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 に答える