How can I give an alias name for e.g. includes()
?
Following is given:
Arel does actually have an alias method.
student_alias = Student.arel_table.alias(:my_student_table_alias)
caveat: this will require you to use even more handcrafted Arel and do the join manually. And the joins in Arel can get a bit complicated if you're not used to them.
student_alias_join = student_alias.create_on(
Project.arel_table[:primary_key].eq(student_alias[:project_id])
)
Project.joins(
Project.arel_table.create_join(
student_alias, student_alias_join, Arel::Nodes::OuterJoin
)
).order(...)
Something like this should do it.
Of course putting this into some Class method with :my_student_table_alias
as parameter would make it more tidy and reusable as this would look a bit messy in a controller.