2013-04-08 17 views
7

私のアプリケーションの2つの既存のテーブル/モデルにhas_many関係を追加したい&私はそれをどうやって理解するのか分かりませんか?私はレールのコマンドは、それが今、私はとphotos & usersとの関係を設定したいと思い移行既存のモデルに新しいhas_many関係を追加する

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 

以下の作成だけrails generate model Photo image:string hikingtrail:referencesで、私のためにすべてを扱っ生成する新しいモデルで前にこれをしなかった

userhas_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 

&はその後...

すくいデシベルを実行します。あなたの関係を設定するのに十分である移行

+1

こんにちはrossmc - どちらかあなたはライン ADD_INDEXを追加することができます:photos、:user_id を手動で移行するか、ジッピーが示唆していることを実行できます。しかし、その場合にも手動でその行を記述する必要があります。ありがとうVikram – vikram

答えて

6

を。索引を追加して、レコード検索の速度を向上させることができます。実際には、すべての外部キーにインデックスを付けることをお勧めします。しかし、今これについて心配する必要はありません、私はあなたがインデックスを使用するためにその多くのレコードを持っていないと思います。あなたはすでにすべてを移行し、インデックス・メイクを追加したい場合

は行います

rails g migration AddIndexToUserIdToPhotos 

と内部はインデックス列を追加します。

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

ありがとうzippie、私の 'db/schema.rb'ファイルを正しく更新したように見えます。 – Holly

関連する問題