Ruby on rails 3 坎坎酒店;许多协会

Ruby on rails 3 坎坎酒店;许多协会,ruby-on-rails-3,many-to-many,cancan,Ruby On Rails 3,Many To Many,Cancan,我正试图为多对多的关联写一条规则。由于关联表的原因,某些结果会重复 我能力范围内的代码是: 我有许多用户,他们有许多组,我想向所有帖子显示他们的作者属于与当前用户组相同的组。 can:read,Post,:user=>{:group=>{:id=>user.groups.collect{{g{g.id}} 我从日志中获取生成的SQL,并在MySql查询生成器中运行它。重复出现在SQL级别 我怎样才能消除重复的结果 更新1: 生成的SQL: 从用户的帖子内部加入用户中选择帖子用户id用户id内部加

我正试图为多对多的关联写一条规则。由于关联表的原因,某些结果会重复

我能力范围内的代码是: 我有许多用户,他们有许多组,我想向所有帖子显示他们的作者属于与当前用户组相同的组。 can:read,Post,:user=>{:group=>{:id=>user.groups.collect{{g{g.id}}

我从日志中获取生成的SQL,并在MySql查询生成器中运行它。重复出现在SQL级别

我怎样才能消除重复的结果

更新1:

生成的SQL: 从
用户
帖子
内部加入
用户
中选择
帖子
用户id
用户id
内部加入
组用户
组用户用户id
用户id
用户
内部加入
id
=
组用户
组id
其中(
id在(1,2)中)限制30偏移量0

我更新了帖子以包含生成的SQL。问题是,如果一个用户属于两个组,那么我会得到重复的结果。没有办法“区分”结果吗?

您可以在返回组ID后尝试使用数组方法。

而不是:

can :read, Post, :user => { :group => { :id => user.groups.collect { |g| g.id } } }
尝试:


我决定使用一个命名范围,以便为我的查询获得不同的结果

我将此添加到post.rb:
named\u scope:unique\u posts,:select=>“DISTINCT'posts.*”

现在,当我调用@posts.unique\u posts时,会得到不同的结果

can :read, Post, :user => {:group => { :id => user.groups.map(&:id).uniq } }