Rails 5, Postgesql и группировка по ассоциации - PullRequest
0 голосов
/ 17 октября 2018

Я изо всех сил пытаюсь разобраться с Postgesql и группировать по ассоциациям.

У меня есть пробная версия, в которой есть много повторений.Я хочу сгруппировать по столбцу в повторениях, чтобы использовать в переменной.В настоящее время у меня есть:

@trials = Trial.joins(:repetitions).group('repetitions.repetition_index')

Но получите эту ошибку.

PG::GroupingError: ERROR:  column "trials.id" must appear in the GROUP BY clause or be used in an aggregate function

Теперь, читая об этом, мне нужно включить trials.id в метод моей группы, но когда я делаювывод больше не группируется по repetitions.repetition_index.Кажется, что он группируется по trials.id.

Как мне убедиться, что группа только по repetitions.repetition_index?

Обновление

Пытается:

@trials = Trial.joins(:repetitions).select('repetitions.repetition_index,repetitions.treatment_index').group('trials.id, repetitions.repetition_index,repetitions.treatment_index')

И звонит:

<% @trials.each do |r| %>
    <table class="table table-bordered">
        <tr>
            <td><%= r.repetition_index %></td>
            <td><%= r.treatment_index %></td>
        </tr>
    </table>
<% end %>

Дает мне вывод:

|1|1|
-----
|1|2|
-----
|2|1|
-----
|2|2|
-----

Когда я ищу:

| |1|
|1|2|
-----
| |1|
|2|2|
-----

1 Ответ

0 голосов
/ 17 октября 2018

Если вы хотите избавиться от этой ошибки, вы можете сделать

@trials = Trial.joins(:repetitions).group('trials.id, repetitions.repetition_index')

Если вы не хотите группировать по trails.id и хотите группировать по repetitions.repetition_index, вам нужно выбрать только повторы.repetition_index из запроса, например

@trials = Trial.joins(:repetitions).select('repetitions.repetition_index').group('repetitions.repetition_index')

Дайте мне знать, если вы ясны или нет

Обновление В соответствии с вашим обновленным вопросом, я думаю, вам нужно что-то вроде ниже.запрос не проверендайте мне знать, если он не работает

 Trial.
 joins(:repetitions).
 select('repetitions.repetition_index,repetitions.treatment_index').
 group_by {
    |repetition| repetitions.repetition_index
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...