See question on stack overflow: http://stackoverflow.com/questions/28595636/rails-4-how-to-give-alias-names-to-includes-and-joins-in-active-record-que - Model Student and model Teacher are both STI models with super class model User - Model Story is a STI model with super class model Task - includes() and joins(), both fails Rails alias naming convention (includes() and joins()) - One model as parameter - is base model (includes(:users)) -> alias name is class name of base name (in plural) - is STI model (includes(:students)) -> alias name is class name of base name (in plural) - More models as parameters - have more STI models with same base class name (includes(:students, :teachers)) - first parameter (STI) -> alias name is class name of base name (in plural) - all other parameters (STI) -> alias name is {STI name plural}_projects - One base model and one STI model with same base model (includes(:users, :teachers)) - first parameter (base) -> alias name is class name of base name (in plural) - second parameter (STI) -> alias name is {STI name plural}_projects - More STI models with different base model (includes(:students, :stories)) -> alias name is class name of base name (in plural) The alias name depends on the parameter order in includes() or joins() and if the parameters have another parameter with same base class.