如何保持数组代表其类?

时间:2012-05-11 18:55:13

标签: ruby-on-rails

如果我这样取一个Object数字:

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

我无法再在where上执行@object方法。

无论如何,我仍然可以表演..

@objects.where(:attribute => identity)

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

1 个答案:

答案 0 :(得分:4)

一旦您触发all,就会返回一个数组实例,因此您的问题的回答是。但是有一些陷阱:

  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. Hacky和效率低下的方式:

    all_objects     = Object.all[1..5]
    special_objects = object.select { |object| object.attribute == something_special }