Во-первых, вы должны использовать обычный метод вместо области видимости, так как запрос довольно сложный, и результат будет точно таким же (просто легче отформатировать).
Во-вторых, я не уверен, почему у вас есть параметр "order_syntax" в этой лямбде, когда вы его нигде не используете.
Вот что я бы предложил (используя новый синтаксис цепочки Active Record). Я не проверял его, но он должен работать, если я понял ваш исходный запрос.
def search(term)
select("*, COUNT(payment_notifications.p_type) AS number_of_objects").
where('items.title LIKE ? OR items.desc LIKE ? OR taggings.context LIKE ?', "%#{term}%", "%#{term}%", "%#{term}%").
includes(:taggings, :payment_notifications, :user).
order('number_of_objects')
end