ruby-on-rails – rails where()sql在数组上查询

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – rails where()sql在数组上查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我会尽可能的解释这个.我有一个关于用户帖子的查询

@selected_posts = Posts.where(:category =>“Baseball”)

我想写下列声明.这里是伪造的:

User.where(用户在@selected_posts中有一篇文章)

请记住,我有很多关系设置,所以post.user是可用的.

有任何想法吗?

/编辑

@posts_matches = User.includes(@selected_posts).map{ |user|

      [user.company_name,user.posts.count,user.username]

    }.sort

基本上,我需要上面的工作,所以它使用的用户在selected_posts中发布,而不是我们在我们的数据库中的每个用户.

@H_502_19@解决方法
只需使用以下内容
User.find(@selected_posts.map(&:user_id).uniq)

这将从所有选定的帖子中获取用户ID,将其转换为数组,并删除任何重复项.将数组传递给用户将只找到具有匹配ids的所有用户.问题解决了.

要将此与您在问题中显示内容相结合,您可以写:

@posts_matches = User.find(@selected_posts.map(&:user_id).uniq).map{ |user|
  [user.company_name,user.posts.size,user.username]
}

使用大小来计算一个关系,而不是计数,因为Rails缓存大小方法,并且自动不会多次查找.这是更好的性能.

不确定您在查询结尾时使用Array#排序完成哪些操作,但您可以随时执行以下操作:

@users_with_posts_in_selected = User.find(@selected_posts.map(&:user_id).uniq).order('username DESC')

猜你在找的Ruby相关文章