Ruby on rails 如何直接返回一个有多个对象

Ruby on rails 如何直接返回一个有多个对象,ruby-on-rails,activerecord,has-many,Ruby On Rails,Activerecord,Has Many,我试图找到一种方法,直接返回has-many对象,而不是关系完整的父对象 这是我的ProjectExternalTeam模型,我希望直接返回来宾(一组用户) 有了这个,gus最终成为了用户的集合。我觉得一定有更简单的方法,比如 gus = ProjectExternalTeam.where(account_id:1).guests 提前感谢您的用户模型应该与ProjectExternalTeam有很多/只有一个关系。因此,您希望提取用户并将查询加入到ProjectExternalTeam中。比

我试图找到一种方法,直接返回has-many对象,而不是关系完整的父对象

这是我的ProjectExternalTeam模型,我希望直接返回来宾(一组用户)

有了这个,gus最终成为了用户的集合。我觉得一定有更简单的方法,比如

gus = ProjectExternalTeam.where(account_id:1).guests

提前感谢

您的用户模型应该与ProjectExternalTeam有很多/只有一个关系。因此,您希望提取用户并将查询加入到ProjectExternalTeam中。比如:

User.joins(:project\u external\u teams)。其中(“project\u external\u teams.account\u id=?”,1)[可选…按成员\u id列出其余条件]

如果您需要在末尾添加一个数组,只需将

因此,请首先尝试:

User.joins(:project\u external\u teams)。其中(“project\u external\u teams.account\u id=?”,1)。到


然后看看你得到了什么。

你想
映射。使用
&:method
语法(xxx.map do{sth | sth.method}
的快捷方式)可以

gus = ProjectExternalTeam.where(account_id: 1).map(&:guest)
但是,有关优化的数据库查询,请参见@Gen answer

gus = ProjectExternalTeam.where(account_id:1).guests
gus = ProjectExternalTeam.where(account_id: 1).map(&:guest)