根据多对多关系过滤结果

时间:2010-07-09 23:52:27

标签: ruby-on-rails

Post属于User s。 User拥有并属于许多角色(即,我们在此处理的表格为postsusersrolesroles_users)< / p>

如何选择具有“编辑”角色的用户撰写的所有帖子?

即,我想要数据库驱动的

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

2 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

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

然后你可以这样做:

Role.find(editor_id).posts

答案 1 :(得分:2)

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