Ich bin mir nicht sicher, wie diese Frage zu gestalten, ich bin auf der Suche nach einem Design-Problem zu lösen.Handling Bedingungen auf Klassenebene basierend auf Zuordnung
Ich benutze ActiveRecord.
Ein Agency
kann mehrere documents
haben.
documents
hat eine Spalte additional_details
vom Typ jsonb
. Enthält Hash-Details.
additional_details
Spalte hat einen anderen Satz von Schlüsselwertpaaren basierend auf agency
.
Beispiel:
doc1 = agency1.documents.first.additional_details => { xml_url: '', ... }
doc2 = agency2.documents.first.additional_details => { feed_url1: '', ... }
Agency1 und Agentur2 sind beispielsweise Objekte der Agentur.
Wenn ich einen Anruf machen die URL wie document.additional_details.get_url
zu holen I Bedingungen wie
def get_url
if agency1.name == 'Utah'
return additional_details[xml_url]
elsif
so on
elsif
so on
end
end
das ist keine gute Praxis schreiben kann ich fühle.
Ich glaube, wir können dies auf Klassenebene lösen. Hinweis: Ich muss dies auf Präsentationsebene lösen, ich verwende Dekorateure.
Edit:
Eine besondere Agentur gleiche Schlüssel innerhalb additional_details Spalte haben aber Werte sind sicherlich anders.
Ist nicht der Name des Schlüssels, in dem die URL in den additional_details eines Attributs der Agentur gefunden wird? Dann sollte es als Spalte in die Agentur-Tabelle gehen. Es ist mir nicht klar, was Sie mit "if agentur1" meinen. Ist 'agency1' eine Variable oder steht sie für etwas wie' if self.name == "Some special agency" '? –
@SvenKoschnicke du hast recht, ich habe es aktualisiert. Überprüfen Sie auch meine Bearbeitungsbereich – Nithin