Ich möchte die unten Logik zu woanders verschieben, so dass ich es sowohl in meinem Controller als auch in einer Rake-Aufgabe verwenden kann.Wie man json in einer Rake-Aufgabe rendert
Mein Controller-Aktion sieht ungefähr so aus:
def show
@user = User.find(params[:id])
@account = # load account
@sales = # load sales
..
render :json => {
"user": user,
"account": @account.map do |a|
JSON.parse(a.to_json(include: :addresses))
end,
"sales": @sales.map do |s|
JSON.parse(s.to_json(include: :products))
end
}
end
Grundsätzlich ist der Punkt ist, dass ich die Verbände zu durchqueren, um die JSON alle Daten in ihm hat.
Wie kann ich diese Logik woanders verschieben, damit ich sie dann in meiner Controller-Aktion und auch in einer Rake-Task aufrufen kann.
eine Idee ist; Sie erstellen ein 'tabellenloses Modell' [es ist eine normale Ruby-Klasse] und öffnet eine API, die diesen Job erledigt. Dann können Sie es von überall anrufen – illusionist
Sie können [as_json] (http://apidock.com/rails/Hash/as_json) -Methode in Benutzermodell überschreiben, und rufen Sie es dann vom Controller sowie von Rake-Task. –