Gibt es eine Möglichkeit polymorphen Verbände in umgekehrter Richtung zu verwenden, so dass ich nicht link_id haben müssen, picture_id und code_id Felder in mein Post-Tabelle?
has_one
bedeutet, dass der Fremdschlüssel in der Tabelle anderen ist. Wenn Sie Ihr Modell auf diese Weise definiert haben, werden Sie in Ihrer Post-Tabelle keine link_id
, picture_id
und code_id
haben. Ich glaube, du wolltest sagen belongs_to
.
Ich will etwas tun, wie @ post.postable und bekommen das Kind Objekt, das eines der Link wäre, Bild oder Code.
Ich glaube, Sie könnten dies tun durch STI mit und Kombinieren der links
, pictures
und codes
Tabellen, dann die Art des Modells zu testen, wenn das Abrufen. Das scheint jedoch klugdy und könnte mit vielen ungenutzten Spalten enden.
Gibt es einen Grund, die ungenutzten ID-Spalten nicht zu speichern, außer Platz zu sparen? Wenn Sie bereit sind, sie zu halten, dann könnten Sie ein virtuelles Attribut definieren und eine postable_type
Spalte: (ungetestet Code kann spektakulär scheitern)
def postable
self.send(self.postable_type)
end
def postable=(p)
self.send(postable_type.to_s+"=",p)
end
Wäre es sinnvoll, wenn das Foto eine Beziehung hat: has_many? Dann könnten Sie tun, was Sie suchen .. – Trip