ARel を利用したメソッドを使用する必要があります。
@courses = Course.scoped # Course.all in rails 4
@courses = @courses.order("courses.name asc").includes(:units)
@courses = @courses.joins(:course_sub_responsibles) if YOUR_CONDITION
@courses = @courses.group("courses.name")
@courses = @courses.where(conditions)
@courses
これは、変数が反復されるときにのみクエリを実行しますが、クエリはピースごとに構築されるため、必要に応じてピースを追加/削除できます。
Rails4 では、さらにクリーンになります (前髪に注意してください。これは、通常どおり「レシーバーを変更する」ことを意味します)。
@courses = Course.all
@courses.order!("courses.name asc")
@courses.includes!(:units)
@courses.joins!(:course_sub_responsibles) if YOUR_CONDITION
@courses.group!("courses.name")
@courses.where!(conditions)
@courses