0

나는 useremail, videocount, imagecount, videoids, imageids 등의 모든 정보를 얻을 필요가있는 모든 users.hence에게 알림 메일을 보내고 있습니다. usermailer에게 mail.i를 보내기 위해 보내십시오. 모든 필수 매개 변수를 메소드에 보내고 배열의 각 배열을 반복하여이 프로세스를 단순화하고 싶습니다.매개 변수로 배열의 배열을 보낸 다음 각 배열을 반복하면서

for example:- 

    ###########the below code is in a loop of users################ 

    User.signed_in_users.find_in_batches(:batch_size => 100) { |users| users.each { |user| 

    vcount=Video.where(:users_notified=>f).count 
    icount=Image.where(:users_notified=>f).count 
    acount=Audio.where(:users_notified=>f).count 

    @count << vcount + icount + acount 

    vcat=###ALL VIDEO CATEGORIES 
    icat=###ALL IMAGE CATEGORIES 
    acat=###ALL AUDIO CATEGORIES 

    @cats << vcat + icat + acat...and many more 


    ###########now sending all these parameter to mailer(array of arrays) 
    ####how i can simplify this call 
UserMailer.notify_user(user.email,@video_cat,@video_count,@image_cat,@image_count,@audio_cat,@audio_count,@place_cat,@place_count,@Lpage_count,@Dpage_count).deliver 


    } } ###loop ends 
+0

모든 모델과 사용자간에 어떤 관련이 있습니까? 일대일처럼? –

+0

예 그들은 보통 has_many 및 belongs_to .. @NitinVerma – Milind

답변

0

왜 동일한 값을 여러 번 가져 오려고하는지 알 수 없습니다. 아래의 코드는 아무런 이유없이 여러 번 실행됩니다.

vcount=Video.where(:users_notified=>f).count 
icount=Image.where(:users_notified=>f).count 
acount=Audio.where(:users_notified=>f).count 

@count << vcount + icount + acount 

vcat=###ALL VIDEO CATEGORIES 
icat=###ALL IMAGE CATEGORIES 
acat=###ALL AUDIO CATEGORIES 

@cats << vcat + icat + acat 

user 개체를 반복하고 있기 때문에. 이 코드 묶음에는 user의 상호 작용이 없습니다. 따라서 각 블록에서 꺼낼 수 있습니다.

vcount=Video.where(:users_notified=>f).count 
icount=Image.where(:users_notified=>f).count 
acount=Audio.where(:users_notified=>f).count 

@count << vcount + icount + acount 

vcat=###ALL VIDEO CATEGORIES 
icat=###ALL IMAGE CATEGORIES 
acat=###ALL AUDIO CATEGORIES 

@cats << vcat + icat + acat 

User.signed_in_users.find_in_batches(:batch_size => 100) { |users| users.each { |user| 

###########now sending all these parameter to mailer(array of arrays) 
    UserMailer.notify_user(user.email,@count,@cats) 

} } ###loop ends 
+0

미안 @Nitin Verma ,,, 그것은 혼란스럽게 보일지도 모릅니다. 단순화를 위해 코드의 복잡한 부분을 제거했습니다 .... 제 질문을 업데이트했습니다. – Milind

+0

그냥 확인. 이 블록은 사용자 객체'vcount = Video.where (: users_notified => f) .count에 대한 의존성을 가지고 있습니까? icount = Image.where (: users_notified => f) .count acount = Audio.where (: users_notified => F) @count << VCAT = ### VIDEO ALL 범주 ICAT = ### IMAGE ALL 범주 ACAT = ### AUDIO ALL 범주 @cats << VCAT 수직 카운트 + + icount ACOUNT를 .count + icat + acat' –

+0

yes..its는 'User.find_in_batches'에서 반복됩니다. – Milind