Если роль - это просто поле в пользовательской модели:
scope :with_role, lamda{|role_name| where(:role => role_name) }
User.with_role "Member"
Если роль - отдельная модель и User belongs_to :role
. Также у роли есть поле заголовка:
scope :with_role, lamda{|role_name| includes(:role).where(:roles => {:title => role_name}) }
User.with_role "Member" # the same usage
UPD 1
Если User has_many :roles
, следует использовать метод модели пользователя:
class User < ActiveRecord::Base
has_many :roles
def self.with_role(role_name)
Role.where(:name => role_name).first.users # hope title is validated uniq
end
end
=> User.with_role ("Пользователь")
или используя область действия:
scope :with_role, lambda{ |role| joins(:roles).where(:roles => {:name => role}) }