Ich habe folgende Modelle:Wählen Sie Datensätze mit weniger als N Verbände, die bestimmte Assoziation haben keine
class Rating < ApplicationRecord
belongs_to :user
belongs_to :image
validates :image_id, uniqueness: { scope: [ :user_id] }
end
class Image < ApplicationRecord
has_many :ratings, dependent: :destroy
has_many :users, through: :ratings
end
class User < ApplicationRecord
has_many :ratings, dependent: :destroy
has_many :images, through: :ratings
end
Benutzer die Bilder sind Bewertung. Ich möchte Bilder erhalten, die nicht von einem bestimmten Nutzer bewertet wurden und insgesamt von weniger als 3 Nutzern bewertet werden. Im Moment zeige ich Bilder, die von einer minimalen Anzahl von Nutzern bewertet wurden. Ich habe dies mit Cache-Zähler getan:
@image = Image.order(:ratings_count).first
Teil Ich habe Probleme mit, wie die Bilder zu bekommen, die nicht von aktuellen Benutzern bewertet werden. Würde mich über jede Hilfe freuen. Die Anzahl der Abfragen ist nicht so wichtig, solange es die Ruby-Methode ist, um diese Datensätze zu erhalten.
sollte es sein: 'Image.where ('id nicht in()?', Already_rated)' Aber Dank! – Levara
Natürlich habe ich es aktualisiert. – Iceman
Es gibt eine Möglichkeit, dies in einer Abfrage zu tun, ich habe einfach keine Rails auf meinem aktuellen Computer zum Spielen. Aber die Abfrage wäre etwas wie 'Image.joins (: rating) .where (ratings: {user_id: 1}).' 'Und so weiter – Iceman