18F/dolores-landingham-slack-bot

View on GitHub
app/models/quarterly_message.rb

Summary

Maintainability
A
1 hr
Test Coverage
class QuarterlyMessage < ActiveRecord::Base
  acts_as_paranoid
  acts_as_taggable

  has_many :sent_messages, as: :message, dependent: :destroy

  validates :body, presence: true
  validates :tag_list, presence: true
  validates :title, presence: true

  def self.filter(params)
    if params[:title].present? ||
        params[:body].present? ||
        params[:tag].present?

      results = where("lower(title) like ?", "%#{params[:title].downcase}%").
        where("lower(body) like ?", "%#{params[:body].downcase}%")

      if params[:tag].present?
        tags = params[:tag].split(",").each(&:strip)
        results = results.tagged_with(tags, any: true)
      end
      results
    else
      all
    end
  end

  def self.ordered_by_created_at
    order(created_at: :desc)
  end
end