2012-05-11 21 views
0

如果我參加了一些Object像這樣:如何保持一個代表其類的數組?

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

我再也不能在@object執行where方法。

反正是有,我仍然可以執行..

@objects.where(:attribute => identity) 

只要我知道所有的對象都是同一類的?

+0

恐怕你不是,因爲你需要ActiveRecord集合,而不是數組。嘗試使用'limit(5)'而不是'[1..5]'或類似的東西。 –

+0

這只是爲了在同一個類中創建一個相互對象數組的例子。 – Trip

回答

4

一旦觸發all返回Array實例,所以回答你的問題是沒有。但有一些陷阱:

  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 } 
    
+0

太棒了!非常感謝這些紀念品!這正是我正在尋找的。 – Trip

+0

++調用'select' hackey。 :d – Trip

相關問題