Sql Rails:Getting all有许多与父对象的活动关系相关的对象
我怀疑这是一个基本问题。在我的Sql Rails:Getting all有许多与父对象的活动关系相关的对象,sql,ruby-on-rails,has-many,active-relation,Sql,Ruby On Rails,Has Many,Active Relation,我怀疑这是一个基本问题。在我的rails应用程序中,一个用户拥有许多分数。是否有一种方法可以获得用户之间活跃关系的所有分数。我可以做user.scores(显然),但如果用户是一组用户,我需要做类似于users.scores的事情。这显然是不正确的 您可以使用 Score.where(user: users) 这将像sql一样构造 select * from scores where user_id in (select *.id from users where ..) 你可以用 Sco
rails
应用程序中,一个用户
拥有许多分数
。是否有一种方法可以获得用户之间活跃关系的所有分数。我可以做user.scores(显然),但如果用户是一组用户,我需要做类似于users.scores
的事情。这显然是不正确的 您可以使用
Score.where(user: users)
这将像sql一样构造
select * from scores where user_id in (select *.id from users where ..)
你可以用
Score.where(user: users)
这将像sql一样构造
select * from scores where user_id in (select *.id from users where ..)
你试过以下方法吗
@users.collect(&:scores).flatten!
你试过以下方法吗
@users.collect(&:scores).flatten!
我认为公认的答案更有效。如果我错了,请更正。这两种方法都将生成相同的基础
sql
。使用哪一个取决于您的场景和其他上下文。不管是哪种方式,我都会将此逻辑转移到可测试性和维护模型中。但是可以使用包含:@users.includes(:分数)。collect(&:scores)。flatten代码>-这将只有2个查询。好的呼叫@MikDiet,没有意识到。我认为接受的答案更有效。如果我错了,请更正。这两种方法都将生成相同的基础sql
。使用哪一个取决于您的场景和其他上下文。不管是哪种方式,我都会将此逻辑转移到可测试性和维护模型中。但是可以使用包含:@users.includes(:分数)。collect(&:scores)。flatten代码>-这将只有2个查询。很好的呼叫@MikDiet,没有意识到这一点。