如何直接return a has many object
How to return a has many object directly
我正在尝试找到一种方法 return a has many object directly instead of the parent object with the relation intact
这是我的 ProjectExternalTeam 模型,我正在寻找 return 来宾(用户集合)
class ProjectExternalTeam < ActiveRecord::Base
belongs_to :project
belongs_to :guest, class_name: 'User', foreign_key: 'member_id'
belongs_to :owner, class_name: 'User', foreign_key:'invited_by_id'
end
现在我正在使用
gus = []
gg = ProjectExternalTeam.where(account_id:1)
gg.each do |g| gus.push(g.guest) end
有了这个 gus 最终成为用户的集合。我觉得必须有一些更简单的方法来做到这一点,比如
gus = ProjectExternalTeam.where(account_id:1).guests
提前致谢
您的用户模型应该与 ProjectExternalTeam 有 has_many/has_one 关系。因此,您想提取用户并使用 ProjectExternalTeam 加入您的查询。类似于:
User.joins(:project_external_teams).where("project_external_teams.account_id = ?", 1) [可选...其余条件按member_id]
如果您需要在末尾添加一个数组,只需添加 .to_a.
所以,首先尝试一下:
User.joins(:project_external_teams).where("project_external_teams.account_id = ?", 1).to_a
看看你得到了什么。
您想map
。使用 &:method
语法(xxx.map do {|sth| sth.method}
的快捷方式)这给出了
gus = ProjectExternalTeam.where(account_id: 1).map(&:guest)
但是,请参阅@Gen 回答以获得优化的数据库查询。
我正在尝试找到一种方法 return a has many object directly instead of the parent object with the relation intact
这是我的 ProjectExternalTeam 模型,我正在寻找 return 来宾(用户集合)
class ProjectExternalTeam < ActiveRecord::Base
belongs_to :project
belongs_to :guest, class_name: 'User', foreign_key: 'member_id'
belongs_to :owner, class_name: 'User', foreign_key:'invited_by_id'
end
现在我正在使用
gus = []
gg = ProjectExternalTeam.where(account_id:1)
gg.each do |g| gus.push(g.guest) end
有了这个 gus 最终成为用户的集合。我觉得必须有一些更简单的方法来做到这一点,比如
gus = ProjectExternalTeam.where(account_id:1).guests
提前致谢
您的用户模型应该与 ProjectExternalTeam 有 has_many/has_one 关系。因此,您想提取用户并使用 ProjectExternalTeam 加入您的查询。类似于:
User.joins(:project_external_teams).where("project_external_teams.account_id = ?", 1) [可选...其余条件按member_id]
如果您需要在末尾添加一个数组,只需添加 .to_a.
所以,首先尝试一下:
User.joins(:project_external_teams).where("project_external_teams.account_id = ?", 1).to_a
看看你得到了什么。
您想map
。使用 &:method
语法(xxx.map do {|sth| sth.method}
的快捷方式)这给出了
gus = ProjectExternalTeam.where(account_id: 1).map(&:guest)
但是,请参阅@Gen 回答以获得优化的数据库查询。