diff options
author | Yamagishi Kazutoshi <ykzts@desire.sh> | 2017-12-02 00:40:02 +0900 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2017-12-01 16:40:02 +0100 |
commit | 74320971e2cc9f605dbcc23c52ac36e18b80716f (patch) | |
tree | 444edcce8371270e8f4a632a4423fc589ec9aa7a /app/models/invite_filter.rb | |
parent | eee3b32b7714a302ae384c92ef13601167ec892a (diff) |
Add invite filter (#5862)
Diffstat (limited to 'app/models/invite_filter.rb')
-rw-r--r-- | app/models/invite_filter.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/app/models/invite_filter.rb b/app/models/invite_filter.rb new file mode 100644 index 000000000..7d89bad4a --- /dev/null +++ b/app/models/invite_filter.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +class InviteFilter + attr_reader :params + + def initialize(params) + @params = params + end + + def results + scope = Invite.order(created_at: :desc) + + params.each do |key, value| + scope.merge!(scope_for(key, value)) if value.present? + end + + scope + end + + private + + def scope_for(key, _value) + case key.to_s + when 'available' + Invite.available + when 'expired' + Invite.expired + else + raise "Unknown filter: #{key}" + end + end +end |