我想扩展从查询返回的数组以添加新方法。
假设我有一个模型查询,它有一些计算属性 size_x, size_y ...
在我的控制器中,我检索了一些查询
@queries = Query.limit(10).all
现在@queries 变成了一个数组。我想用 2 种方法扩展数组
@queries.average_size_x
和
@queries.average_size_y
我正在寻找一种简洁的解决方案,可以增强使用这两种方法返回的 Array 而无需将其添加到全局 Array 类中。有什么办法吗?
以下是我尝试过的一些事情:
- 重新定义 self.find 方法
这仅在我将查询更改为旧语法时才有效
Query.find(:all, :limit => 5)
扩展关系
Query.limit(10).extending(QueryAggregator)
如果我不调用该all
方法,因为该对象是 ActiveRecord 关系,但一旦all
被调用,则该方法average_size_x
不可用。
我看到的唯一选择是扩展 Array 类并在那里添加方法,但它可能与其他模型无关......
有什么建议么 ?