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