Wie kommt man eine eifrige bedingten geladen später verzögertes Laden zu sein auf mit Active und Rails
-
05-09-2019 - |
Frage
Sie mich zuerst lassen einen Code zeigen.
class User
has_and_belongs_to_many :roles
named_scope :employees, { :conditions => ["roles.name = 'Employee'"], :include => :roles }
end
OK, also später in einem Controller wollte ich Recht für alle Mitarbeiter suchen. Ich habe den Namen Umfang aufhelfen zu tun, dass mit dem verbinden und bedingte Suche. Aber das Problem ist in der Ansicht, die ich alle, dass die Benutzer Rollen zeigen will, aber es wird nur die Mitarbeiterrolle angezeigt werden soll.
Gibt es trotzdem, dass ich „user.roles“ sagen kann und haben die faul in der Ansicht geladen, nachdem ich bereits eifrig sie geladen?
Lösung
Die Dokumentation für habtm
(sowie has_many
) besagt, dass Sie die Sammlung mit einem optionalen Parameter zugreifen können:
Sammlung (force_reload = false)
Gibt einen Array aller zugehörigen Objekte. Eine leere Array ist zurückgegeben, wenn keine gefunden werden.
Sie können die Rollen mit user.roles(true)
neu zu laden.