2011-08-11 2 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 }는 선택 자료가 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를 반환하는 사용할 수 있습니다

.

관련 문제