Как мне сгруппировать файл axl x для сортировки в алфавитном порядке по организации

#ruby-on-rails #ruby #group-by

#рубин на рельсах #рубин #группа-по

Вопрос:

Организация-это столбец участника, вложенный в инструкцию this includes. Я хочу, чтобы он группировался attendee.org в алфавитном порядке

 @meetings = NwMeeting.includes(meeting_attendees: [:attendee]).where(show_id: @show.id)  @meetings.each do |meeting|  @nw_attendee_meetings = meetingamp;.meeting_attendees(amp;:attendee)  @nw_attendee_meetings.each do |nw_attendee_meeting|  attendee = nw_attendee_meetingamp;.attendee  data = []  data lt;lt; attendeeamp;.org  data lt;lt; attendeeamp;.name  data lt;lt; meetingamp;.statusamp;.capitalize  AxlsxTools.add_row(data) (edited)  

Комментарии:

1. Является org ли это ассоциацией или атрибутом? Если атрибут, то NwMeeting.includes(meeting_attendees: [:attendee]).where(show_id: @show.id).references(meeting_attendees: [:attendee]).order(Attendee.arel_table[:org].asc) он будет работать, если вам нужно будет присоединиться к ассоциации. Также, возможно, вы захотите упомянуть, как вы хотите обрабатывать пустые организации. Обратите внимание, что слишком много операторов безопасной навигации.

2. Вы хотите, чтобы встречи с НУЛЕВОЙ организацией помещались перед всеми записями или после них?

3. @kevinluo201 впереди!

Ответ №1:

Поскольку вы хотите перечислить записи участников, может быть немного проще, если вы переключите «основную» модель, которую вы запрашиваете, на Участника. Присоединяйтесь к NwMeeting и ВЫБЕРИТЕ status столбец, затем вы можете просто сделать ORDER BY attendees.org ASC , записи с нулевым значением по умолчанию будут помещены перед другими.

 @attendees = Attendee.joins(meeting_attendees: :nw_meeting)  .select("attendees.*, nw_meetings.status AS meeting_status")  .where(nw_meetings: { show_id: @show.id })  .order("attendees.org ASC")  # .order("attendees.org ASC NULL FIRST") if you use PosgreSQL @attendees.each do |attendee|  data = []  data lt;lt; attendee.org  data lt;lt; attendee.name  data lt;lt; attendee.meeting_statusamp;.capitalize  AxlsxTools.add_row(data) end  

кстати, метод Arel @engineersmnky более продвинутый, и это тоже должно сработать 🙂