0
我想扩展查询返回的数组以添加新方法。在Rails中扩展从查询返回的数组 - 重构
让我们假设我有一个模型查询和它有几个属性计算size_x,size_y ...
在我的控制,我找回了几个疑问
@queries = Query.limit(10).all
现在@queries成为一个数组。我想有2种方法
@queries.average_size_x
而且
@queries.average_size_y
我找了一个整洁的解决方案,将增强阵列与2种方法返回而不将其添加到全局Array类扩展Array 。有没有办法做到这一点?
这里有一些事情我想:
- 重新定义self.find方法,如果
这只能更改我的查询到旧的语法
Query.find(:all, :limit => 5)
扩展关系
Query.limit(10).extending(QueryAggregator)
这工作,如果我不叫all
方法的对象是一个ActiveRecord关系,但一旦all
被调用时,方法average_size_x
不可用。
我看到的唯一的选择是扩展Array类,并添加方法出现,但也可能是不相关的其他型号...
有什么建议?
好的,这是好的,但需要调用扩展每次我做一个查询。可以在模型Query上设置此方法,以便在此模型上完成的每个查询都可以使用扩展方法? – Rafal
@Rafal在初始化程序中如何扩展Query?它将应用于所有模型,但这是可以忽略的开销。看到这里的例子:http://stackoverflow.com/questions/2328984/rails-extending-activerecordbase –