2010-07-09 90 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