2011-08-11 55 views
0

什麼是最好的方式來了解當前選擇ID是否已經是Datamapper結果的一部分,而無需遍歷所有結果並構建數組?Datamapper - 結果集中是否包含id

@saved_item = Array.new 
    current_user.items.all.each do |item| 
      @saved_items.push(item.id) 
    end 

    if (@saved_items.include?(selection.id)) 
      true 
    else 
      false 
    end 

回答

1

current_user.items.detect { |i| i.id == selection.id }將返回指示選擇ID是否包含在current_user.items收集一個布爾(真/假)。

+1

嗯我很確定#detect將返回一個具有給定ID的項目。我會建議使用#any?而是像這樣: current_user.items.all.any? {| i | i.id == selection.id} – solnic

+0

solnic是對的:'#detect'返回給定塊返回true的第一個實例,或者如果集合中沒有任何實例執行,則返回nil。 –

0

current_user.items.delete(selection.id)

這也可以使用,這將在數組中返回選擇ID是否存在其他將返回零。

相關問題