Ich habe eine Produkttabelle und möchte eine Spalte hinzufügen:
t.references :imageable, :polymorphic => true
Ich habe versucht, eine Migration dafür zu generieren, indem ich Folgendes getan habe:
$ rails generate migration AddImageableToProducts imageable:references:polymorphic
aber ich mache es offensichtlich falsch. Kann jemand einen Vorschlag machen? Vielen Dank
Wenn ich versuche, es nach dem Generieren der Migration manuell einzufügen, habe ich es folgendermaßen gemacht:
class AddImageableToProducts < ActiveRecord::Migration
def self.up
add_column :products, :imageable, :references, :polymorphic => true
end
def self.down
remove_column :products, :imageable
end
end
und es hat immer noch nicht funktioniert
ruby-on-rails
polymorphic-associations
rails-migrations
Railslearner
quelle
quelle
Antworten:
Soweit ich weiß, gibt es keinen eingebauten Generator für polymorphe Assoziationen. Generieren Sie eine leere Migration und ändern Sie sie dann von Hand entsprechend Ihren Anforderungen.
Update : Sie müssen angeben, welche Tabelle Sie ändern. Nach dieser SO Antwort :
quelle
schema.rb
sollte sie aktualisiert werden, aber es wird nichts darüber gesagtpolymorphic
. Stattdessen sollten Sie die tatsächlichen Felder sehen, die Rails verwendet (die Rails-Handbücher enthalten weitere Informationen).references
Spalte einen Index hinzu ? Muss ich das indizieren?imageable_type
und / oderimageable_id
nach Bedarf hinzufügen .imageable_id
undimageable_type
funktioniert. Danke für Ihre Hilfe.Was Sie versuchen, ist noch nicht in der stabilen Version von Rails implementiert, daher ist Michelles Antwort vorerst die richtige. Diese Funktion wird jedoch in Schienen 4 implementiert und ist bereits in der Edge-Version wie folgt verfügbar (gemäß diesem CHANGELOG ):
quelle
add_reference :products, :imageable, polymorphic: true, index: true
{polymorphic}
muss mit der Fischschale entkommen werden, zB\{polymorphic\}
Sie können auch Folgendes tun:
quelle
Du kannst es versuchen
rails generate migration AddImageableToProducts imageable:references{polymorphic}
quelle
{
und}
müssen mindestens mit der Fischschale entkommen, zB\{polymorphic\}