0

如果我采取Object这样的数字:

@objects = Object.all[1..5]

我不再可以where@object.

反正有吗,我还能演。。

@objects.where(:attribute => identity)

只要我知道所有对象都属于同一类?

4

1 回答 1

4

一旦你触发all了一个 Array 实例就会返回,所以你的问题的答案是no。但是有一些陷阱:

  1. 保留范围变量。即,如果您需要在多个地方使用作用域对象,请执行以下操作:

    objects = Object.scoped
    
    all_objects     = objects.all
    special_objects = objects.where(attribute: something_special).all
    
  2. 继续玩作用域:

    objects = Object.skip(1).take(5)
    
    all_objects     = objects.all
    special_objects = objects.where(attribute: something_special).all
    
  3. 哈克和低效的方式:

    all_objects     = Object.all[1..5]
    special_objects = object.select { |object| object.attribute == something_special }
    
于 2012-05-11T19:03:04.170 回答