2013-08-29 35 views
9

Tôi đang cố gắng để thêm một tài liệu tham khảo sử dụng bài bảng của tôi với đoạn mã sau:phương pháp Undefined 'add_reference'

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

nhưng tôi đã nhận được một thông báo lỗi:

undefined method 'add_reference' 

Bất cứ ai cũng biết làm thế nào để giải quyết điều này?

Tôi đang sử dụng Rails 3.2.13

+0

điều này có thể giúp đỡ? http://stackoverflow.com/questions/4954969/rails-3-migrations-adding-reference-column – dax

Trả lời

16

Trong Rails 3 bạn phải làm điều đó như vậy

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

Chỉ trong Rails 4 bạn có thể làm điều đó theo cách mà bạn đăng tải.

+0

Cảm ơn bạn Luis, tôi không biết rằng phương pháp này chỉ hợp lệ trong Rails 4 –

1

Phương pháp này apperead trong Rails 4.0

Tôi nghĩ rằng bạn có thể tạo ra một số bản vá khỉ với chức năng này cho Rails 3.2

2

Làm thế nào về điều này:

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

add_reference là cụ thể cho đường ray 4.0. 0, vì vậy, bạn nên thử thay vào đó:

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

đây là một grea t post về chủ đề này

3

di cư của bạn nên được

rails generate migration AddUserRefToPosts user:references 
+0

đây gần như là bản sao câu trả lời của tôi . :) –

+0

@MarekLipka xin lỗi tôi chưa thấy bài đăng của bạn cho phép tôi xóa nó –

+0

@MarekLipka chnage không hoàn thành bản sao của bạn ngay bây giờ –

Các vấn đề liên quan