Ich habe ein Empfehlungsmodell und ich möchte alle Empfehlungen auswählen, die durch ihre Movie_id Spalte unterschieden werden. Ich habe ein paar Methoden ausprobiert, aber keine, die noch gearbeitet haben:Rails: Alle Datensätze auswählen, die durch eine bestimmte Spalte eindeutig sind
scope :not_duplicate, -> {
group_by(&:movie_id)
}
==> doesn't work on a class
scope :not_duplicate, -> {
uniq_by(&:movie_id)
}
==> doesn't work on a class
scope :not_duplicate, -> {
select(:movie_id).group(:movie_id, "recommendations.id")
}
==> only returns movie_id values and I need entire record
scope :not_duplicate, -> {
select("recommendations.*").group(:movie_id)
}
==> PG::GroupingError: ERROR: column "recommendations.id" must appear in the GROUP BY clause or be used in an aggregate function
Ich bin sicher, dass dies ein ziemlich regelmäßiges Vorkommen ist aber aus irgendeinem Grund kann ich nicht die Lösung finden. Irgendwelche Ideen?
Sie müssen klären, was Sie für mehr suchen. Willst du nur die erste Empfehlung pro Film? Wenn dies der Fall ist, versuchen Sie "Recommendation.joins (" JOIN (SELECT MIN (id) as first_id VON den Empfehlungen GROUP BY movie_id) t ON t.first_id = recommendations.id ")'. –