안녕 나는find_or_create 난간, 이론에서 경쟁 조건 및 생산
class Place < ActiveRecord::Base
def self.find_or_create_by_latlon(lat, lon)
place_id = call_external_webapi
result = Place.where(:place_id => place_id).limit(1)
result = Place.create(:place_id => place_id, ...) if result.empty? #!
result
end
end
가 그럼 난 다른 모델이나 컨트롤러에서 할 싶습니다이 코드 조각을했습니다
p = Post.new
p.place = Place.find_or_create_by_latlon(XXXXX, YYYYY) # race-condition
p.save
그러나 작업 실행이 인 경우이 데이터를 가져 오는 데 너무 많은 시간이 걸리며을 만들고 때로는 프로덕션에서 p.place을 nil로 만듭니다.
실행하기 전에 어떻게 응답을 기다려야합니까? p.save? 귀하의 조언을 보내 주셔서 감사합니다
여기에 비슷한 질문이 있습니다. http : // stackoverflow.com/questions/6768647/rails-3-potential-race-condition – jim