2013-04-08 7 views
7

Vorrei aggiungere una relazione has_many a due tabelle/modelli esistenti nella mia app & Non sono sicuro di come farlo?aggiunta di una nuova relazione has_many a un modello esistente

Quando ho fatto questo prima con un nuovo modello di binari generano comando gestito tutto per me, con appena rails generate model Photo image:string hikingtrail:references ha creato la migrazione di sotto

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 

Ora vorrei impostare una relazione tra users & photos con ogni userhas_many :photos.

Quando si genera una migrazione per ottenere ciò, non include lo add_index :photos, :user_id, è qualcosa che dovrei fare manualmente o sono i passaggi di seguito sufficienti per impostare questa relazione nel mio database?

rails g migration AddUserIdToPhotos user_id:integer

che crea ...

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

& quindi eseguire ...

rake db: migrate

+1

Hi rossmc - O si può aggiungere l'add_index linea di : foto,: user_id manualmente nella migrazione sopra o puoi fare ciò che Zippie ha suggerito. Ma anche in questo caso dovrai scrivere quella linea manualmente. Grazie Vikram – vikram

risposta

6

È sufficiente configurare il vostro rapporto. È possibile aggiungere un indice per migliorare la velocità della ricerca dei record. In effetti alcuni consigliano di mettere un indice a tutte le chiavi esterne. Ma non preoccuparti di questo ora, immagino che non avrai molti record per usare un indice.

Se si è già migrato tutto e si desidera aggiungere un indice di accontentarsi:

rails g migration AddIndexToUserIdToPhotos 

e dentro aggiungere la colonna di indice:

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

grazie zippie, sembra che abbia aggiornato correttamente il mio file 'db/schema.rb' e lo capisco anche io :) – Holly