2017-01-14 2 views
0

Ich versuche, ein Feld in meinem Modell zu erstellen, das zwei andere Felder verknüpft. Ich möchte, dass dies außerhalb des Controller-Codes geschieht, da dieses Feld bei vielen Gelegenheiten verwendet wird.Schienen erstellen und verwenden berechnetes Feld

Ich habe den Code unten, aber es funktioniert nicht.

Im Program Controller:

@test = Program.pluck(:program_detail) 

in dem Programm Modell:

... 
has_many :versions 

private 
    def program_detail 
    [owner, name].join(' - ') 
    end 
... 

** Anmerkung I mongoid Bedeutung verwende ich nicht brauchen, Migrationen zu verwenden, sondern eine Rails Active Antwort wird auf jeden Fall genug sein, um mich zum Laufen zu bringen.

Antwort

0

pluck funktioniert nur für Datenbankspalten, nicht für Attribute in Ihrer Modellklasse. Sie können jedoch alle Datensätze abrufen und dazu.

Lane.where(..something..).map(&:program_detail) 

geben Sie eine Reihe von program_detail ‚s

+0

So erstellen eine neue berechnete Spalte ist die beste Praxis nur in der Steuerung auf dem erstellen Aktion zu tun? – HoosierCoder

+1

Warum in der Steuerung? Die Verkettungslogik befindet sich im Modell. Jetzt können Sie die Methode 'program_detail' überall verwenden. Vergiss nicht, es öffentlich zu machen. – chumakoff

+0

Auf jeden Fall in das Modell, das ist der richtige Ort. – Iceman

Verwandte Themen