2013-07-02 2 views
0

У меня есть сложная область, где я беру контрольный список. В этом контрольном списке есть куча задач по разным категориям. Я хочу только заполненные контрольные списки, но некоторые контрольные списки будут заполнены без завершения каждой категории. Поэтому мне нужно проверить, нужен ли каждый столбец, прежде чем проверять, есть ли в нем столбец. Вот мой пример.Использование функции Map для удаления объекта из activerecord :: relation

scope :complete, lambda {|check_lists| check_lists.map do |check_list| 
    not_complete = false 

    if check_list.event.booking.video_for_event? 
     if check_list.raw_footage_user_id.blank? && check_list.raw_footage_check.blank? then not_complete = true end  
    end 

    if check_list.event.booking.eblast_not_blank? 
     # more checking... 
    end 

    if check_list.event.booking.on_site_not_blank? 
     # more checking... 
    end 

    if not_complete then reject end 
end } #If videos, verify video items. if eblasts, verify eblast items, etc... 

Поэтому в основном я должен знать, как закончить его, удалив non_complete объекты из массива привязывается вне.

+0

Вы должны рассмотреть также обратиться за консультацией по упрощая сферы. Это действительно ужасно. – deefour

+1

На самом деле я попытался напечатать пример того, что я делаю, и оставил очень простые команды, чтобы получить точку. Все, что мне действительно нужно, это как получить его из моего массива. Если ваш комментарий, по крайней мере, сделает его конструктивным – user1977840

ответ

1

Если я четко понимаю, что вы хотите только законченный контрольные

В основном вы должны вернуть контрольный список, когда это правда и ноль, если это не так, то устранить Nils в результате массив с компактным ..., который является работой выберите

checklists.map do |checklist| 
    # .... 
    checklist unless not_completed 
end.compact 

или более сжато:

checklists.select do |checklist| 
    # .... 
    !not_completed 
end 
Смежные вопросы