2013-04-08 19 views
7

Chciałbym dodać relację has_many do dwóch istniejących tabel/modeli w mojej aplikacji & Nie jestem pewien, jak to zmienić?Dodawanie nowej relacji has_many do istniejącego modelu

Kiedy zrobiłem tego wcześniej z nowym modelem szyny wygenerowania polecenia obsługiwane wszystko dla mnie, tylko z rails generate model Photo image:string hikingtrail:references stworzył poniższy migrację

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 

Teraz chciałbym założyć związek między users & photos z każdy userhas_many :photos.

Kiedy generuję migrację w celu osiągnięcia tego, to nie obejmuje ona add_index :photos, :user_id, czy jest to coś, co powinienem robić ręcznie lub czy poniższe czynności wystarczą do skonfigurowania tej relacji w mojej bazie danych?

rails g migration AddUserIdToPhotos user_id:integer

który tworzy ...

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

& następnie uruchomić ...

rake db: migrować

+1

Hi rossmc - Albo można dodać linia add_index : zdjęcia,: user_id ręcznie w powyższej migracji lub możesz zrobić to, co zasugerował zippie. Ale w takim przypadku będziesz musiał napisać tę linię ręcznie. Dzięki Vikram – vikram

Odpowiedz

6

Wystarczy założyć związek. Możesz dodać indeks, aby przyspieszyć wyszukiwanie rekordów. W rzeczywistości niektórzy zalecają umieszczenie indeksu na wszystkich obcych kluczach. Ale nie martw się o to teraz, myślę, że nie będziesz mieć tak wielu rekordów, aby użyć indeksu.

Jeśli już przeniesione wszystko i chcesz dodać markę indeksu zrobić:

rails g migration AddIndexToUserIdToPhotos 

i wewnątrz dodać kolumnę indeksu:

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

dzięki zippie, który wygląda na zaktualizowany mój plik 'db/schema.rb' poprawnie i rozumiem to też lepiej :) – Holly