Я создаю приложение для чата в Rails и у меня есть 3 таблицы следующим образом:
- Пользователи
id
, name
- Номера
id
, user_id
, title
- Участники
id
, room_id
, user_id
users
и rooms
имеют следующие ассоциации.
# user.rb
has_many :rooms
# room.rb
belongs_to :user
Я хочу показать список имен участников, написав:
# rooms/show.html.erb
<% @participants.each do |participant| %>
<%= participant.user.name %>
<% end %>
В моем контроллере я попытался:
# rooms_controller.rb
def show
@participants = Participant.includes(:users).where(room_id: 1)
end
Но я получаю сообщение об ошибке Association named 'users' was not found on Participant; perhaps you misspelled it?
.
У меня есть ощущение, что установление ассоциаций между users
и participants
могло бы решить проблему, но я не уверен, каковы их отношения. (Это не простое отношение has_many
/ belongs_to
, правда ...?)
В целом, я хочу запустить SQL-запрос, похожий на SELECT * FROM participants INNER JOIN users ON participants.user_id = users.id WHERE participants.room_id = 1
. Как я могу написать в Rails для выполнения этого запроса?