Rubin-Modell mit einem array als Attribut
Ich bin derzeit versuchen zu implementieren, das ein Modell zur Vereinfachung der grafischen Diagramm-Erstellung. Jedoch, eines der Attribute muss ein array von Parametern. Zum Beispiel:
"Chart_Series" hat ein "name" wäre ein string-und ein Daten-Feld, das getrennt wäre von Daten, die ein array von arrays [[Datum1, Wert1],[Datum2,Wert2],[Datum3,Value3].
Ist der Zweck, erstellen Sie ein array von "Chart_Series", so ruft so etwas wie:
for series in @chart_series
series.name
for data in series.data
data.[Date, Value]
end
end
würde tun, etwas entlang der Linien von:
Name1
Date1, Value1
Date2, Value 2,
Date3, Value 3,
Date4, Value 4,
Name2
Date1, Value 1,
Date2, Value 2,
Date3, Value 3,
Date4, Value 4,
Dies ist nicht genau der code gewünscht.. mich interessiert einfach die Erzeugung des Modells, die tun könnte etwas wie diese. Jede Hilfe ist willkommen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich sehen kann, werden zunächst zwei Ansätze, nämlich die Definition einer Klasse bilden Ihre key,value-paar oder verwenden Sie einfach einen hash, der zur Darstellung der einzelnen Datenelemente. Der Vorteil einer eigenen Klasse ist, dass Sie können erweitern, es in der Zukunft, wenn zum Beispiel, Sie wollten den genauen Wert in einer Tabelle, wo Sie waren, Rundung auf die nächsten 100k.
Der folgende code zeigt drei Klassen, die zusammen das tun, was Sie wollen
Läuft das wie folgt :-
Erzeugt die folgende Ausgabe
Wenn Sie wollten, nehmen Sie die Hash-Ansatz ist, dann würden Sie nicht mehr brauchen, die DataItem-Klasse, und Sie konnte instanziieren, eine neue Serie mit code wie diesem
Die show-Methode der Chart würde dann so Aussehen
Vorausgesetzt, Sie beabsichtigen, die Verwendung einer relationalen Datenbank-backend mit ActiveRecord dann ich glaube, Sie müssen (mindestens) zwei Modelle. So etwas wie dieses:
Ihre
Chart
Modell hätte diename
Attribut und dieDataPoint
Modell hätte diedate
undvalue
Attribute.Dann können Sie auf Ihre Daten Punkte, als Verein, wie diese:
@chart.data_points
so wie es aussieht ein array-Attribut, obwohl es ist eine Vereinigung mit einem anderen Modell
Chart
dann erstellen Sie einfach ein array oder hash als class-Attribut, und Sie sollten gut zu gehen.Ihnen, probieren Sie etwas wie dieses
Sagen, Sie haben eine Klasse namens " User und müssen Sie zum generieren der Attribute dynamisch, Sie können dies tun, wie diese,
Klasse User
Benutzer.class_exec{
%w[name Alter Adresse].each{|i|
attr_accessor ich
}
}
Ende
dadurch wird eine User-Klasse mit Attributen
name, Alter und Adresse
und Sie können diese verwenden, als
a = User.neue
ein.name = "sameera"
ein.Alter = "29"
ein.Adresse = "home town"
stellt ein.prüfen
hoffe, das hilft
cheers
sameera