Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. class MediaAsset < ApplicationRecord
  2.  
  3. @@filters = {
  4. query: -> (search_term) { where("name like ?", "%#{search_term}%") },
  5. tag_ids: -> (tag_ids) { includes(:tags).where(tags: { id: tag_ids }) },
  6. campaign_id: -> (campaign_id) { joins(:campaigns).where(campaigns: { id: campaign_id }).distinct },
  7. broadcast_date_start: -> (start_date) {where("broadcast_date >= ?", start_date.to_datetime) },
  8. broadcast_date_end: -> (end_date) { where("broadcast_date <= ?", end_date.to_datetime) },
  9. size: -> (size) { limit(size) },
  10. #media_type: -> (type="video") { scope_by_media_type(media_type) }
  11. }
  12.  
  13. def self.search_by(search_params)
  14. media_type = search_params.delete(:media_type) || "video"
  15.  
  16. filters = [scope_by_media_type(media_type)]
  17.  
  18. search_params.each_pair do |filter_name, argument|
  19. filter = @@filters.fetch(filter_name, none)
  20. filters << filter.call(argument)
  21. end
  22.  
  23. filters.reduce(:merge)
  24. end
  25.  
  26. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement