Skip to content

Instantly share code, notes, and snippets.

@subimage
Created July 6, 2012 04:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save subimage/3058191 to your computer and use it in GitHub Desktop.
Save subimage/3058191 to your computer and use it in GitHub Desktop.
Gnarly Rails scope of the day
# Projects a user has access to either through ProjectAssignment, or as an "account manager"
named_scope :user_has_access_to, lambda{|user|
{
:select => 'DISTINCT projects.*',
:joins => %q\
LEFT JOIN project_assignments
ON (
projects.id = project_assignments.project_id
AND project_assignments.has_access = 1
)
LEFT JOIN account_manager_memberships
ON (
projects.client_id = account_manager_memberships.client_id
AND projects.client_type = account_manager_memberships.client_type
)
\,
:conditions => [
%q\
(project_assignments.person_id = ?)
OR (account_manager_memberships.person_id = ?)
\,
user.id, user.id
]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment