문제

Dynamic Find_all 메소드를 사용하여 복잡한 쿼리로 작업하고 있으며 해당 Find_all 메소드로 블록을 보내면 코드를 단순화 할 수있는 지점에 도달했습니다.

이 문제를 다루는 플러그인이나 진행중인 작업이 있습니까?

간단히 말해서, 나는 다음과 같은 일을하고 싶습니다.

@products = Product.find_all_by_ids(ids, .....) do |p|
            # do something to each product like      
            p.stock += 10
          end

다른 가이드 또는 더 나은 방법은 대단히 감사 할 것입니다.

도움이 되었습니까?

해결책

Rails 2.3을 소개했습니다 find_in_batches 그리고 find_each 방법 (참조 여기) 많은 레코드의 배치 처리.

따라서 다음과 같은 작업을 수행 할 수 있습니다.

  Person.find_each(:conditions => "age > 21") do |person|
    person.party_all_night!
  end

다른 팁

나는 그것을 사용한다 .each 열거 가능한 방법과 같은 방법

@products = Product.find_all_by_ids(ids, .....)
@products.each { |p| p.stock += 10 } 

일부도 있습니다 열거 가능한 확장 그 레일은 일반적인 일을한다면 약간 도움이 될 수 있습니다.

또한, 물체를 같은 것으로 저장하는 것을 잊지 마십시오. p.save 변경 사항이 실제로 지속되기를 원한다면.

이것에 무슨 문제가 있습니까?

@products = Product.find_all_by_ids(ids).each do |p| 
  p.stock+=10
 end

당신이 모르는 경우, 각 배열이 전달 된 배열을 반환합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top