Skip to content

Instantly share code, notes, and snippets.

@codespore
Created October 9, 2011 03:17
Show Gist options
  • Select an option

  • Save codespore/1273225 to your computer and use it in GitHub Desktop.

Select an option

Save codespore/1273225 to your computer and use it in GitHub Desktop.
Left outer joining 2 fields referring to same User model in Rails 3 (Part 2)
t = Task.arel_table
u = User.arel_table
c = u.alias("creators_tasks")
keyword = "%#{params}%"
relation = includes(:user_assigned,:creator)
.where(
t[:id].matches(keyword)
.or(u[:username].matches(keyword))
.or(c[:username].matches(keyword))
)
# Outputs
# SELECT * FROM tasks LEFT OUTER JOIN users ON users.id = tasks.user_assigned_id AND users.deleted_at IS NULL LEFT OUTER
# JOIN users creators_tasks ON creators_tasks.id = tasks.creator_id AND creators_tasks.deleted_at IS NULL WHERE
# users.username LIKE 'Manager%'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment