Ich habe ein Benutzermodell (für die Authentifizierung/Autorisierung) mit einem zugeordneten Profilmodell (für Informationen über den Benutzer, dh Haarfarbe) verwendet.Scope ein Modell auf ein Assoziationsattribut
Ich versuche, einen Bereich zu erstellen, um alle Benutzer mit einem bestimmten Attribut zu finden. dh: alle dunkelhaarigen Menschen (Haarfarbe ist schwarz oder braun) oder alle hellhaarigen Menschen (Haarfarbe ist blond oder silber).
Ich kann alle Profile mit dunklen Haaren finden, aber wie finde ich die zugehörigen Benutzer.
app/models/user.rb:
class User < ActiveRecord::Base
has_one :profile
app/models/profile.rb
class Profile < ActiveRecord::Base
belongs_to :user
scope :dark_hair, -> { where('hair_color = ? or hair_color = ?', 'black', 'brown' }
scope :light_hair, -> { where('hair_color = ? or hair_color = ?', 'blond', 'silver' }
So kann ich die Profile finden:
irb>> Profile.dark_hair
Aber ich kann Erhalte die Benutzer (keine davon funktioniert):
irb>> Profile.dark_hair.user
irb>> Profile.dark_hair.users
irb>> User.profile.dark_hair
Wie frage ich nach den Benutzern, die ich will? Oder sollte der Umfang auf dem Benutzer liegen? Ich habe das versucht, konnte aber nicht herausfinden, wie ich es richtig schreiben soll.
Dank dieser funktionierte! Auch in der ursprünglichen, nicht vereinfachten Version. – MERM