2010-07-09 89 views
0

Post s属于User s。 User■找,属于多个角色(即我们这里处理的表是postsusersrolesroles_users基于多对多关系的筛选结果

如何我可以选择通过谁拥有“编辑”角色的用户编写的所有帖子?

也就是说,我要的

Post.all.select{|p| p.user.roles.map(&:name).include?("Editor")}} 

回答

2
Post.all(:joins => {:user => :roles}, :conditions => ["roles.name = ?", "editor"]) 
+0

这是正确的,虽然'roles.name =>?'呃d be'roles.name =?' – 2010-08-05 00:56:47

+0

好电话,更新了帖子。谢谢! – 2010-08-05 04:00:22

2

数据库驱动的版本,你可以尝试这样的事:

class Role < ActiveRecord::Base 
    has_and_belongs_to_many :users 
    has_many :posts, :through => :users 
end 

然后,你可以做这样的事情:

Role.find(editor_id).posts