Я не знаю, почему все "Нет, ты не можешь", когда это возможно в именованных областях.
Например, определите как часть ActiveRecord :: Base:
named_scope :by_created_at, :order_by => 'created_at'
Это позволяет вам преобразовать простое отношение в упорядоченное до его фактического извлечения:
@items = @items.by_created_at
Как примечание, не стоит включать области, которые имеют перекрытие: определения порядка, так как это приводит к их добавлению вместо того, чтобы переопределять каждую из них по очереди.
Тем не менее, в вашем примере это не слишком сложно, чтобы представить его рефакторинг следующим образом:
reference =
case (type)
when 1
mycompany
else
myhome
end
@items = reference.items.all(:order_by => 'created_at')