Find_all 동적 메소드로 코드 블록을 보냅니다
-
05-07-2019 - |
문제
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
당신이 모르는 경우, 각 배열이 전달 된 배열을 반환합니다.
제휴하지 않습니다 StackOverflow