Использование запроса has_many через рельсы - PullRequest
0 голосов
/ 29 января 2019

У меня 3 модели,

Артикул

belongs_to :category
belongs_to :author

Автор

has_many :articles
has_many :categories, through: :articles

Категория

has_many :articles
has_many :authors, through: :articles

Это то, что я хочуdo,

author / show.html.erb

<h5>Recent Articles</h5>
<table>
 <thead>
  <tr>
   <th>Judul Artikel</th>
   <th>Kategori</th>
  </tr>
 </thead>
 <tbody>
  <% Article.all.each do |author| %>
   <tr>
    <td><%= author.judul_artikel %></td>
    <td><%= author.category.nama_kategori %></td>
   </tr>
  <% end %>
 </tbody>
</table>

Что я хочу сделать, это когда автор / идентификатор присутствует в таблице, он показывает только категорию и статьюгде присутствует идентификатор.

Я не знаю, как использовать запрос или что-то здесь

1 Ответ

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

Предполагая, что вам нужны статьи, относящиеся к этому автору:

Используя Условия хеширования , вы можете лучше охватить модель Статьи в статьях, относящихся к автору:

<% Article.where(author_id: @author.id).each do |author| %>
  <tr>
   <td><%= author.judul_artikel %></td>
   <td><%= author.category.nama_kategori %></td>
  </tr>
<% end %>

Но есть лучшее решение.Поскольку вы используете действие show, вы должны передать переменную экземпляра (например, @author).затем вы можете использовать его метод связи как объект @author.articles:

<% @author.articles.each do |author| %>
  <tr>
   <td><%= author.judul_artikel %></td>
   <td><%= author.category.nama_kategori %></td>
  </tr>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...