【发布时间】:2019-01-20 03:10:06
【问题描述】:
我正在 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 关系,是不是……?)
总的来说,我想运行类似于SELECT * FROM participants INNER JOIN users ON participants.user_id = users.id WHERE participants.room_id = 1 的SQL 查询。我如何在 Rails 中编写来运行这个查询?
【问题讨论】:
标签: mysql sql ruby-on-rails ruby-on-rails-5