bismoney
@bismoney

Как правильно получить значение из таблицы?

Всем привет, никак не могу правильно написать.

Есть таблица post c привязкой к таблице post_categories по id.
Пытаюсь получить название категории по его id в таблице post (post_category_id)

<% @post.each do |post| %>
<%= PostCategory.select('name').where(id: post.post_category_id) %>
<% end %>


Хочу получить запрос
SELECT name FROM `post_categories` WHERE id = 1

Получаю
#<PostCategory::ActiveRecord_Relation:0x00000006c62ba8>


Как правильно?
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
ibub1ik
@ibub1ik
Ruby/Rails Dev => Elixir
Советую почитать что такое ActiveRecord::Relation для понимания что тебе возвращают рельсовые методы.
Но в любом случае делать так как у тебя написано ни в коем случае нельзя, спавн запросов в цикле - это очень плохо для производительности. Если хочется рядом с каждым постом выводить наименование категории, то сделай так:
# В контроллере:
@posts = Post.includes(:post_category)

# Во вьюхе:
<% @posts.each do |post| %>
<%= post.post_category.name %>
<% end %>
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
guides.rubyonrails.org/active_record_querying.html

Всё предельно понятно расписано.
Ответ написан
Комментировать
posts.each do |post|
post.post_category.name
end
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы