2009-10-02 20 views

Trả lời

2

Có vấn đề gì?

def self.down 
    remove_column :addresses, :addressable_type 
    remove_column :addresses, :addressable_id 
end 
+0

bạn có nói remove_column: địa chỉ,: địa chỉ không chính xác không? – Damian

+0

yeah .. đây là giải pháp đúng – amitkaz

+0

Damian: không, chỉ cần nhìn vào bảng thông qua một số trình duyệt SQL và bạn sẽ thấy hai cột. –

-2

Có gì sai với điều này?

def self.down 
    remove_column :addresses, :addressable 
end 
+0

Thats những gì tôi nghĩ rằng nó sẽ là nhưng đây là lần đầu tiên tôi đã sử dụng mô hình đa hình và đã nhầm lẫn – Damian

+0

thực sự nó không nên nó được remove_column: địa chỉ,: địa chỉ – Damian

+0

Rất tiếc, bạn hoàn toàn đúng. Tôi nên kiểm tra các tài liệu trước, thay vì đi theo trí nhớ. –

12

trên thực tế,

change_table :addresses do |t| 
    t.remove_references :addressable 
    end 

sẽ là một chút railsier, không có?

chỉnh sửa: Như Eben Geer chỉ ra

change_table :addresses do |t| 
    t.remove_references :addressable, :polymorphic => true 
    end 

là cách chính xác để làm điều này. Chúc mừng!

+1

điều này sẽ khiến cột addressable_type bị bỏ lại phía sau. nó phải là t.remove_references: addressable,: polymorphic => true –

+0

Tôi sẽ upvote câu trả lời này nếu nó bao gồm @EbenGeer bình luận của mình – Arjan

6
def self.down 
    change_table :addresses do |t| 
    t.remove_references :addressable, :polymorphic => true 
    end 
end 
2
class RemoveAddressableFromAddresses < ActiveRecord::Migration 
    def change 
    remove_reference :addresses, :addressable, polymorphic: true, index: true 
    end 
end 
+0

Hãy dành một phút để giải thích mã của bạn làm gì và cách nó trả lời câu hỏi này. – Bond

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