【发布时间】:2014-05-27 04:51:53
【问题描述】:
这是由其他人编写的现有代码,正在尝试对其进行增强。我是一名从事 Ruby on Rails 的 Java 开发人员,所以请体谅。
我有这样的实体
User
交付实体,
Delivery
belongs_to :user
named_scope :for_abcs, :conditions => {'deliveries.xyz_type' => ['Xyz1', 'Xyz2']},
定义了许多这样的命名范围。
现在来取货,它是这样写的
@deliveries = current_user.deliveries.send("for_abcs").with(:xyz, :sender, :receiver)
...
...
...
# few other conditions added to @deliveries
终于
@deliveries.sort(...)
这种排序会占用大量 sql 并产生性能问题。我想使用find_each,但find_each 仅适用于Ruby on Rails 中的活动实体,如何在不更改代码的情况下实现这一点(如果可能))
我以前也是这样的
Delevery.find_each
无论在哪里
Delivery.find
现在我不能这样做,因为它是一个数组,在 Ruby on Rails 中执行此操作的解决方法或正确程序是什么。
编辑: 我尝试了什么:
deliveries_temp = []
@deliveries.find_each(:batch_size=>999) do |delivery_temp|
deliveries_temp.push(delivery_temp)
end
这给了我错误
undefined method `find_each' for []:Array
type(@deliveries) 返回 ActiveRecord::NamedScope::Scope ,rails 版本 2.3.18
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-2