Newer
Older
dmpopidor / app / models / theme.rb
class Theme < ActiveRecord::Base

  ##
  # Associations
  has_and_belongs_to_many :questions, join_table: "questions_themes"
  has_and_belongs_to_many :guidances, join_table: "themes_in_guidance"
  has_many :answers, through: :questions

  ##
  # Possibly needed for active_admin
  #   -relies on protected_attributes gem as syntax depricated in rails 4.2
  attr_accessible :guidance_ids , :as => [:default, :admin]
  attr_accessible :question_ids, :as => [:default, :admin]
  attr_accessible :description, :title, :locale , :as => [:default, :admin]

  ##
  # Before save & create
  before_save :generate_slug

  validates :title, presence: {message: _("can't be blank")}

  scope :search, -> (term) {
    search_pattern = "%#{term}%"
    where("title LIKE ? OR description LIKE ?", search_pattern, search_pattern)
  }
  ##
  # returns the title of the theme
  #
  # @return [String] title of the theme
  def to_s
  	title
  end

  def to_slug
    title.parameterize.truncate(80, omission: '')
  end

  def generate_slug
    if self.title
      self.slug = self.title.parameterize
    end
  end
end