Ich habe ein paar Rückrufe vorbei, die auf Logaktivitäten erstellen/aktualisieren:current_user über Rückruf zu modellieren
class Projelement
..
after_create { |p| p.log_projelement_activity "created" }
after_update { |p| p.log_projelement_activity "edited" }
Ich brauche das Design zu erweitern die current_user
(Devise) zu log_projelement_activity
passieren den Benutzer aufzuzeichnen an die Zeit der Erstellung/Aktualisierung.
Ich versuche, die current_user
von der Steuerung an das Modell und die Rückrufe über ein virtuelles Attribut zu übergeben. Aber das funktioniert nicht.
Der Code:
class Projelement
attr_accessor :modifying_user
after_create { |p| p.log_projelement_activity "created", modifying_user }
after_update { |p| p.log_projelement_activity "edited", modifying_user }
def log_projelement_activity(op_type, user)
@a = Activity.new
@a.user = user
end
end
class MilestoneController
..
def create
@milestone = Milestone.new(params[:milestone])
@milestone.modifying_user = current_user
end
end
Jede erstellen/aktualisieren Activity
Werte zu erwarten hat, mit der Ausnahme, dass das user
Feld nil
.
Was fehlt mir?
Sie meinen 'Projement.new', oder? Versuchen Sie, einen Benutzer zu 'params' hinzuzufügen,' @milestone = Projlement.new (params [: meilenstein] .merge (: modifying_user => current_user)) '. – shime
Danke. Ich instanziiere einen '' Milestone'', der eine Art '' Projement'' ist. Dies hat ein paar zusätzliche Attribute und alle anderen Attribute werden richtig eingestellt, mit Ausnahme von '' modifying_user''. Leider hat dein Vorschlag nicht funktioniert: Wie ist es anders als vorher? –