ActiveRecord给了我一组用户。我想通过使用User对象中未持久存储的数据的复杂函数对这些用户进行排序。
有没有办法在不保留数据时使用范围?
有没有办法将sort函数编写为类方法,因此我可以进行如下调用:
sorted_users = User.first(20).sorted_my_way
答案 0 :(得分:3)
我认为不可能这样做。
可以定义可以像User.first(20).sorted_my_way
一样调用的类方法和范围,但这些方法和范围只能将东西附加到您创建的查询中。如果你想在ruby中排序,我认为你需要包装整个东西,如:
class User
self.sorted_my_way(limit)
first(20).sort_by {...}
end
end
User.sorted_my_way(20)
你可以做的另一件事是使用块样式方法:
class User
self.sorted_my_way
yield.sort_by {...}
end
end
User.sorted_my_way { first(20) }