The code powering m.abunchtell.com https://m.abunchtell.com
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 

42 行
750 B

  1. # frozen_string_literal: true
  2. class ReportFilter
  3. KEYS = %i(
  4. resolved
  5. account_id
  6. target_account_id
  7. by_target_domain
  8. ).freeze
  9. attr_reader :params
  10. def initialize(params)
  11. @params = params
  12. end
  13. def results
  14. scope = Report.unresolved
  15. params.each do |key, value|
  16. scope = scope.merge scope_for(key, value)
  17. end
  18. scope
  19. end
  20. def scope_for(key, value)
  21. case key.to_sym
  22. when :by_target_domain
  23. Report.where(target_account: Account.where(domain: value))
  24. when :resolved
  25. Report.resolved
  26. when :account_id
  27. Report.where(account_id: value)
  28. when :target_account_id
  29. Report.where(target_account_id: value)
  30. else
  31. raise "Unknown filter: #{key}"
  32. end
  33. end
  34. end