Больше комментариев, чем ответа, но он не очень подходит ...
zed_oxff на мяче.
Чтобы упростить вещи и сохранить их СУХИЕ, вы можете рассмотреть определение отдельных именованных областей вместо одной большой и объединить их в цепочку.
Например:
named_scope :random_order, :order => 'RAND()'
named_scope :limit, :lambda => { |limit| :limit => limit }
named_scope :whatever, ...
Таким образом, вы бы использовали их следующим образом:
Person.random_order.limit(3).whatever