Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
只需从多个其他记录中提取多个记录…(Rails/Ruby)_Ruby_Ruby On Rails 3 - Fatal编程技术网

只需从多个其他记录中提取多个记录…(Rails/Ruby)

只需从多个其他记录中提取多个记录…(Rails/Ruby),ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我认为这是一个简单的问题,但我就是想不出解决办法。如果我有一组记录(本例中为报告): 然后我试图找到其他类型记录的关联集合(在本例中为用户),我天真地尝试了这一点-但从偏移量知道它不起作用: @users = User.find :all, :conditions => ["id IN (?)", @results.user_id] 那么,如何有效地提取@users记录集合呢?假设用户有很多:报告 @users = User.joins(:reports) # all users

我认为这是一个简单的问题,但我就是想不出解决办法。如果我有一组记录(本例中为报告):

然后我试图找到其他类型记录的关联集合(在本例中为用户),我天真地尝试了这一点-但从偏移量知道它不起作用:

@users = User.find   :all,  :conditions => ["id IN (?)", @results.user_id]

那么,如何有效地提取@users记录集合呢?

假设
用户有很多:报告

@users = User.joins(:reports) # all users that have reports
如果您只希望某些特定报告的所有用户

@users = User.joins(:reports).where("reports.id IN (?)", @reports.map(&:id))

假设
用户有多个:报告

@users = User.joins(:reports) # all users that have reports
如果您只希望某些特定报告的所有用户

@users = User.joins(:reports).where("reports.id IN (?)", @reports.map(&:id))

我直接回答了toy您的问题,尽管您可能希望使用关联和即时加载ie。
@reports=reports.includes(:users)
我直接回答了toy您的问题,尽管您可能希望使用关联和即时加载ie。
@reports=reports.includes(:users)