首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >activerecord --在多对多表中查询其中一个表中的记录(而不仅仅是连接表中的行)

activerecord --在多对多表中查询其中一个表中的记录(而不仅仅是连接表中的行)
EN

Stack Overflow用户
提问于 2016-12-08 10:00:47
回答 1查看 96关注 0票数 0

我今天花了很多时间试图弄清楚如何在一个多对多的表中查询它所属的表中的记录。

如果我有一个连接用户和事件的members表,什么样的查询会找到参加给定事件的所有用户,或者某个给定用户正在参加的所有事件?

我最终遇到了这样的东西(它是有效的):

代码语言:javascript
运行
复制
 User.joins(:members).where("members.event_id = ?", @event.id)

但是,这种查询可以在没有SQL语法的情况下完成吗?类似于:

代码语言:javascript
运行
复制
Member.where(user: @user).first.events
EN

回答 1

Stack Overflow用户

发布于 2016-12-08 14:55:15

您应该能够访问用户的事件和事件的用户,如下所示:

代码语言:javascript
运行
复制
@event.users
@user.events

如果您定义了has_many :通过关联(http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association)

代码语言:javascript
运行
复制
class User < ApplicationRecord
  has_many :members
  has_many :events, through: :members
end

class Member < ApplicationRecord
  belongs_to :user
  belongs_to :event
end

class Event < ApplicationRecord
  has_many :members
  has_many :users, through: :members
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41030569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档