Ich frage mich, wie man am besten einige Rails-Modelle so strukturiert, dass sie eine variierende Anzahl von Eingabefeldern unterstützen können.Rails-Modellstruktur zur Unterstützung von Objekten mit unterschiedlicher Anzahl von Feldern
Sagen wir, dass ich ein Artikelmodell habe, das zu einem Themenmodell gehört. Ich möchte eine beliebige Anzahl von Themen haben und jedem Thema erlauben, seine eigenen Felder zu definieren. Zum Beispiel könnte theme_1 primary_colour definieren und theme_2 könnte colour_1, colour_2 und font definieren.
Im Wesentlichen bestimmt die Wahl des Themas, welche zusätzlichen Informationen gesammelt werden müssen, damit der Artikel das Thema richtig anwenden kann.
Wenn Artikel_1 theme_1 verwendet, muss ich einen Wert für primary_color speichern, wenn ich artikel_1 rende. Wenn Artikel_2 auch theme_1 verwendet, möchte ich einen anderen Wert für primary_color definieren können. Wenn article_3 theme_2 verwendet, muss ich außerdem color_1, color_2 und font speichern.
Die Themen definieren die erforderlichen Felder, die erforderlichen Werte würden für den Artikel eindeutig sein.
Bisher habe ich mit den folgenden aber ich bin nicht sicher, seine beste Lösung zu kommen:
class Article < ActiveRecord::Base
belongs_to :theme
has_many :article_details
end
class Theme < ActiveRecord::Base
has_many :fields
end
class ArticleDetail < ActiveRecord::Base
belongs_to :field
belongs_to :listing
end
Der Artikel hat ein Thema und ein Thema hat Felder, damit ich weiß, welche Felder ich für die füllen brauchen Artikel. Artikel haben auch article_details, wo ich einen Wert und einen Verweis auf das Feld speichern, für das der Wert bestimmt ist.
Ich hoffe, ich habe die Beschreibung klar gemacht. Jede Rückmeldung wird geschätzt.
Dank
Es gibt viele Möglichkeiten, dies zu erreichen. Die beste Wahl hängt hauptsächlich ab von: 1. Wieviele Themen haben Sie sich vorzustellen? 2. Wie planen Sie den Zugriff auf oder die Aktualisierung Ihrer Themen (speziell, müssen Sie alle Artikel mit Primärfarbe blau finden, oder einen Artikel gegeben, tun Sie müssen nur herausfinden, was das Thema ist?) – Julie
@Julie - Um der Argumentation halber sagen wir 5-15 Themen, aber ich wollte die Dinge auseinander brechen, um Thema Flexibilität nicht zu begrenzen. Ich sehe nicht voraus, alle Artikel mit Primärfarbe blau zu finden. Ich möchte das Thema einfach "anwenden" können. Also, wenn Artikel_1 primary_color blau hat, könnte ich css für theme_1 haben, wo ich eine primary_color-Variable angeben möchte. – adampetrie