Ich habe eine Profile
, die published
sein kann. A profile
gehört zu :user
und has_many :ratings
.Wie sortiere ich nach einer Zuordnung eines bestimmten Benutzers?
A User has_one :profile
und has_many :ratings
.
A Rating belongs_to :profile && belongs_to :user
.
Dies sind die Schemata für die oben genannten Modelle:
Profile.rb
:
# == Schema Information
#
# Table name: profiles
#
# id :integer not null, primary key
# first_name :string
# last_name :string
# created_at :datetime not null
# updated_at :datetime not null
# user_id :integer
User.rb
:
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# email :string default(""), not null
# created_at :datetime not null
# updated_at :datetime not null
# first_name :string
# last_name :string
Rating.rb
# == Schema Information
#
# Table name: ratings
#
# id :integer not null, primary key
# speed :integer default(0)
# passing :integer default(0)
# tackling :integer default(0)
# dribbling :integer default(0)
# profile_id :integer
# user_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
Was ich tun möchte, ist, alle Profile zu finden, geordnet nach 1 rating
Attribut .... z. Alle veröffentlichten Profile nach passing
(höchste bis niedrigste).
Ich habe versucht, so etwas wie dieses:
Profile.published.where(id: coach.ratings.order(passing: :desc).pluck(:profile_id))
Aber das macht mir nicht immer die Profile in der Reihenfolge ich erwarte.
Also, wie mache ich diese Abfrage, die mir ermöglicht, diese Profile nach all diesen Bewertungen entsprechend eingestuft werden?
Edit 1
Bitte beachten Das Wichtigste dabei ist, dass ich die Bewertungen auf ein Profil von einem bestimmten Benutzer links finden müssen.
In meiner Abfrage oben, coach = User.find(7)
.
Also jeder User
hinterlässt eine Reihe von ratings
auf vielen profiles
.
Was ich tun möchte, ist filtern alle profiles
, die eine spezifische Bewertung haben (sagen wir speed
) und um diese Profile, um die Empfindlichkeit von der höchsten bis zur niedrigsten (aber das benutzerspezifische ist).
mich korrigieren, wenn ich falsch bin. Ich sehe deine Logik als Konflikt. Bewertung (profile_id, user_id). Es bedeutet, dass die Beziehung Benutzer-Profil ist n-n. Aber Sie legen Beziehung Profil-Benutzer ist 1-1 vor. –
Benutzer-zu-Profil ist 1-1, Bewertung zu Profil ist n-n. Wie hast du User-Profile als n-n bekommen? Das einzige, was wahr sein könnte, ist, wenn ich ein 'has_many ratings_users durch:: rating', nein? – marcamillion
'User-Rating 1-n',' Profil-Rating 1-n' => 'User-Profil n-n' –