Rails 3 - работа с данными из нескольких таблиц - PullRequest
0 голосов
/ 11 июня 2011

Я решаю вопрос, как правильно распечатать для элемента в одной таблице элементы из второй таблицы.

В «TabA» у меня есть id: 1 2 3 4

В «TabB» у меня есть tab_a_id: 2 3 3 3 3 3 4

В частности, моя ситуация выглядитthis:

as_controller

@ info_a = TabA.all (: joins =>: bs,: condition => ["city =?", 0])

view

  <% for info in @a %>
    <tr>
      <td><%= info.id %></td>
      <td><%= info.email %></td>
      <td><%= HERE I WOULD LIKE TO PRINT COUNT ITEMS FROM TabB ('bs' controller, 'b' model) %></td>
    </tr>
  <% end %>

И я пытаюсь найти, как напечатать, например, для элемента с идентификационным номером 3 из «TabA» количество строк в «TabB» (в TabB в 5 раз больше значения 3).

Заранее спасибо!

РЕДАКТИРОВАТЬ: решение - info.tabb.size

1 Ответ

1 голос
/ 11 июня 2011

Почему бы вам не установить связь между моделями A и B? Таким образом, вы можете сделать это: a.b.count.

Проблема вашего подхода в том, что вы запрашиваете все строки из БД, Rails оборачивает их объектами AR, помещает их в массив и затем вычисляет их размер. count, с другой стороны, велит БД подсчитывать результаты и возвращает только одно число, поэтому оно намного быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...