2014-05-14 1 views
1

이러한 검사는 생성 된 개체에서 올바르게 수행됩니까?이러한 검사는 생성 된 객체에서 올바르게 수행됩니까?

나는 이것이 실제로 올바르지 않다고 생각합니다.

unless DailyTip.find_by_slug(tip[:slug]).persisted? 
    daily_tip = DailyTip.create!(
     tip: tip[:tip], 
     ... 
    ) 

    day = ProgramDay.find_by_day(tip[:program_day]) 
    day.update_attributes(daily_tip_id: daily_tip.id) 
    else 
    puts 'Video tip already created.' 
    end 

답변

0

이 줄 find_by_slug이 DB를 쿼리합니다 때문에

DailyTip.find_by_slug(tip[:slug]).persisted? 

훨씬 이해가되지 않습니다 뭔가가 발견되면 그것은 이미 DB에 저장되어 있는지 여부를 확인합니다. 아무 것도 발견되지 않으면 코드는 다음과 같이 구분됩니다.

undefined method `persisted?' for nil:NilClass 

if DailyTip.find_by(slug: tip[:slug]) 
    puts "Video tip already created" 
else 
    daily_tip = DailyTip.create! tip: tip[:tip] 
    day = ProgramDay.find_by_day(tip[:program_day]) 
    day.update_attributes(daily_tip_id: daily_tip.id) 
end 

마지막으로 앱 로직에 따라 많은 영향을받습니다. 나는 이것이 조금 도움이되기를 바랍니다.

관련 문제