2013-04-08 8 views
7

Ich möchte eine has_many-Beziehung zu zwei vorhandenen Tabellen/Modellen in meiner App hinzufügen & Ich bin mir nicht sicher, wie es zu di?Hinzufügen einer neuen has_many-Beziehung zu einem vorhandenen Modell

Als ich das tat, bevor mit einem neuen Modell die Schienen erzeugen Befehl behandelt alles, was für mich, mit nur rails generate model Photo image:string hikingtrail:references gründete er die unter Migration

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 

Jetzt würde ich eine Beziehung zwischen users & photos einrichten gerne mit jede userhas_many :photos.

Wenn ich eine Migration erzeuge, um dies zu erreichen, enthält es nicht die add_index :photos, :user_id, ist das etwas, was ich manuell tun sollte oder sind die folgenden Schritte genug, um diese Beziehung in meiner Datenbank einzurichten?

rails g migration AddUserIdToPhotos user_id:integer

die ...

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

& dann laufen ...

rake db erzeugt: wandern

+1

Hallo rossmc - Entweder können Sie die Zeile add_index hinzufügen : fotos,: user_id manuell in oben genannten Migration oder Sie können tun, was Zippie vorgeschlagen hat. Aber in diesem Fall müssen Sie diese Zeile auch manuell schreiben. Danke Vikram – vikram

Antwort

6

Es ist genug, um Ihr Verhältnis. Sie können einen Index hinzufügen, um die Geschwindigkeit Ihrer Datensatzsuche zu verbessern. Einige empfehlen sogar, allen Fremdschlüsseln einen Index hinzuzufügen. Aber machen Sie sich jetzt keine Sorgen, ich nehme an, Sie werden nicht so viele Datensätze haben, um einen Index zu verwenden.

Wenn Sie bereits alles migriert haben und wollen einen Index make hinzufügen tun:

rails g migration AddIndexToUserIdToPhotos 

und innen fügen Sie den Indexspalte:

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

danke zippie, das sieht aus, meine 'db/schema.rb' Datei korrekt aktualisiert zu haben und ich verstehe es auch besser :) – Holly