Chaque ticket a 2 intervalles de temps.Comment regrouper par sur une autre colonne de modèle avec des rails de relation
ticket.rb:
has_many :timeslots, through: :visits
visit.rb:
has_many :tickets
belongs_to :timeslot
timeslot.rb:
has_many :visits
belongs_to :ticket
Ce que je dois faire est de les intervalles de temps chaque billet dans la groupe de 2. Donc
Ticket A - timeslot 1
Ticket A - timeslot 2
Ticket B - timeslot 1
Ticket B - timeslot 2
requête que je suis en train est:
Ticket.where(:zone_id => 1).includes(:user).joins(timeslots:
:visits).group_by("visits.ticket_id")
Mais il est dit:
ArgumentError: wrong number of arguments (1 for 0)
Il dit: 'PG :: GroupingError: ERREUR: la colonne "tickets.id" doit apparaître dans la clause GROUP BY ou être utilisé dans une fonction d'agrégation ' – LearningROR
Le problème est que vous avez plusieurs enregistrements Ticket pour un seul ticket_id, et dans PostgreSQL il se plaint de ne pas pouvoir décider quel enregistrement de ticket il doit sélectionner. C'est pourquoi vous devez utiliser une fonction 'aggregate' pour indiquer à PostgreSQL quel Ticket sélectionner (ex: 'max (tickets.id)'), mais cela ne résoudra pas votre problème. Pouvez-vous expliquer exactement ce que vous voulez et attendez? Pas seulement sur le niveau db mais aussi sur le niveau utilisateur final (côté frontal ou côté API) – MrYoshiji
Merci beaucoup Sir Yoshiji. Je suis finalement fait avec la solution du problème. :-) – LearningROR