Rails: как отобразить все связанные записи из таблицы B на основе каждой записи из таблицы A - PullRequest
0 голосов
/ 15 января 2019

У меня есть две таблицы A и B. A содержит даты, а B содержит описание вместе со столбцом A_id. таблицы А и В имеют связь один ко многим.

Table A
---------------
id  | datecol
----+----------
1   |   03/01/2019
2   |   02/01/2019
3   |   01/01/2019 


Table B

id   |  description    |  A_id
-----+-----------------+------      
1    |  GK1_02/02/2019 | 2
2    |  GK3_01/01/2019 | 3
3    |  GK2_01/01/2019 | 3
4    |  GK1_01/01/2019 | 3
5    |  GK1_01/01/2019 | 1   

В моем шаблоне rails я хочу отобразить записи, как показано ниже:

01/01/2019 
 . GK1_01/01/2019

02/01/2019
 . GK1_02/02/2019

03/01/2019
 . GK1_02/02/2019
 . GK2_02/02/2019
 . GK3_02/02/2019

Итак, я хочу отобразить все связанные записи из B для каждой записи в A.

Может ли кто-нибудь помочь мне в его реализации?

1 Ответ

0 голосов
/ 19 января 2019

То, что у вас есть, имеет отношение один ко многим. Это можно реализовать с помощью ассоциаций Active Record https://guides.rubyonrails.org/association_basics.html.

Например, ваша таблица A может быть моделью Автора, а ваша таблица B может быть моделью Книги

class Author < ApplicationRecord
  has_many :books, dependent: :destroy
end

class Book < ApplicationRecord
  belongs_to :author
end

Чтобы ваш контроллер мог искать ваших авторов

class CatalogController < ApplicationController
  def list
    @authors = Author.all
  end
end

По вашему мнению, переберите авторов и их книги (A.datecol как Author.name, B.description как Book.title)

<ul>
  <% @authors.each do |author| %>
    <li><span><%= author.name %></span>
      <ul>
        <% author.books.each do |book| %>
          <li><%= book.title %></li>
        <% end %>
      </ul>
    </li>
  <% end %>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...