2013-08-29 19 views
9

Próbuję dodać odwołanie do mojego postu użytkownika tabel z następującego kodu:metoda Undefined „add_reference”

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

ale mam komunikat o błędzie:

undefined method 'add_reference' 

ktoś wie jak rozwiązać ten problem?

Używam Rails 3.2.13

+0

to może pomóc? http://stackoverflow.com/questions/4954969/rails-3-migrations-adding-reference-column – dax

Odpowiedz

16

W Rails 3 musi to zrobić jak tak

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

Tylko w Rails 4 można to zrobić tak, jak pisał.

+0

Dziękuję Luis, nie wiedziałem, że ta metoda była ważna tylko w Railsach 4 –

1

Metoda ta apperead w Rails 4.0

myślę można stworzyć jakąś łatkę małpa z tej funkcjonalności dla Rails 3.2

2

Jak o tym:

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

add_reference jest specyficzne dla szyn 4.0. 0, więc powinieneś spróbować tego zamiast:

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

to jest grea t post ten temat

3

migracji powinny być

rails generate migration AddUserRefToPosts user:references 
+0

to jest praktycznie kopia mojej odpowiedzi . :) –

+0

@MarekLipka przepraszam Nie widziałem Twojego wpisu pozwól mi go usunąć –

+0

@MarekLipka chnage zrobiłem nie twój kopie teraz –