2013-08-29 16 views
9

Sto cercando di aggiungere un riferimento per l'utente ai miei tavoli postali con seguente codice:metodo non definito 'add_reference'

class AddUserIdToPosts < ActiveRecord::Migration 
    def change 
    add_reference :posts, :user, index: true 
    end 
end 

ma ho ricevuto un messaggio di errore:

undefined method 'add_reference' 

Qualcuno sa come risolvere questo?

sto usando Rails 3.2.13

+0

questo potrebbe aiutare? http://stackoverflow.com/questions/4954969/rails-3-migrations-adding-reference-column – dax

risposta

16

In Rails 3 è necessario farlo in questo modo

class AddUserIdToPosts < ActiveRecord::Migration 
    def change 
    add_column :posts, :user_id, :integer 
    add_index :posts, :user_id 
    end 
end 

Solo in Rails 4 si può fare il modo in cui hai postato.

+0

Grazie Luis, non sapevo che questo metodo fosse valido solo su Rails 4 –

1

Questo metodo apperead in Rails 4.0

penso che potrebbe creare qualche cerotto scimmia con questa funzionalità per Rails 3.2

2

ne dite di questo:

def change 
    change_table :posts do |p| 
    p.references :user, index: true 
    end 
end 
3

add_reference è specifico alle rotaie 4.0. 0, quindi dovresti provare questo:

class AddUserIdToPosts < ActiveRecord::Migration 
    def change 
    add_column :posts, :user_id, :integer 
    add_index :posts, :user_id 
    end 
end 

questo è un grande t post su questo argomento

3

la migrazione dovrebbe essere

rails generate migration AddUserRefToPosts user:references 
+0

questa è praticamente una copia della mia risposta . :) –

+0

@MarekLipka scusa non ho visto il tuo post fammi eliminare –

+0

@MarekLipka chnage non è la tua copia ora –