Es ist mir aufgefallen, dass, wenn ich einen has_many Join habe, wo das fremde Modell kein so genanntes_to hat, und der Join also ein Weg ist, dann brauche ich eigentlich keinen Fremdschlüssel.Muster für unidirektionale has_many beitreten?
Wir könnten eine Spalte haben, category_ids, die ein gemarsared Array von IDs speichert, die wir an find
übergeben können.
Hier ist also ein nicht getestet Beispiel:
class page < AR
def categories
Category.find(self.category_ids)
end
def categories<<(category)
# get id and append to category_ids
save!
end
def category_ids
@cat_ids ||= Marshal.load(read_attribute(:category_ids)) rescue []
end
def category_ids=(ids)
@cat_ids = ids
write_attribute(:category_ids, ids)
end
end
page.category_ids => [1,4,12,3] page.categories => Array der Kategorie
Gibt es akzeptiert Muster für das schon? Ist es üblich oder einfach nicht die Mühe wert?
Was ist die Motivation dafür? Welches Problem löst es? – tomafro