Ich habe Modell namens User
mit einer has_many
Beziehung zu UserFilter
. UserFilter
hat eine belongs
_to-Beziehung zu User
.lokale Methoden verhalten sich anders, wenn sie mit/ohne self aufgerufen werden. Warum?
Innerhalb des User-Modells Ich rief eine Methode update_user_filters(filter_params_array)
Diese Methode modifiziert user_filters
wie so etwas wie diese
def update_user_filters(filter_params_array)
new_filters = []
old_filter = user_filters
filters_params_array.each do |filter_params|
if filter_params[:id].blank? #if the filter does not yet exist
new_filters << UserFilter.new(filter_params)
end
end
user_filters = new_filters
end
Das die user_filters
den erwarteten Wert setzt aber beim Speichern sie die user_filters
nicht aktualisiert in der db.
aber wenn ich die Zuordnung zu den folgenden ändern, tut es. Kann jemand erklären, warum das so ist?
self.user_filters = new_filters
Beachten Sie, dass, wenn ich zum ersten Mal in dem Modell user_filters
beziehen ist hat eine select in der db so bin ich nicht sicher, wie diese lokale Methode mit self
anders funktioniert und ohne self
Verwandte Frage: http://StackOverflow.com/Questions/44715/Why-Do-Ruby-setter-Need-Self-Qualification-within-the-Class –