module Rostra class Question < ActiveRecord::Base include Rostra::TimestampObserver extend FriendlyId belongs_to :user has_many :answers, :dependent => :destroy has_many :question_followings, :dependent => :destroy has_many :followers, through: :question_followings, source: :user has_many :notified_followers, through: :question_followings, source: :user, conditions: { 'rostra_question_followings.send_email_notifications' => true } acts_as_taggable acts_as_voteable is_impressionable counter_cache: { unique: true } friendly_id :title, use: :slugged validates :title, presence: true, uniqueness: true, length: { :minimum => 15 } validates_presence_of :user, :slug, :tag_list before_save :create_question_following attr_accessor :follow_by_email # Set number of questions per page for will paginate # paginates_per Rostra::Config.number_of_question_per_page # Finds questions asked within the last 15 days ordered by non-unique page views. # def self.trending(limit = 5) Question.where(created_at: (15.days.ago)..(Time.now)).limit(limit).order('impressions_count desc') end def answer_count @answer_count = answers.count end # The last time the question has had any activity (i.e. commment, answer, etc). # def active_at updated_at || created_at end private def create_question_following opted_not_to_follow = follow_by_email.to_i.zero? followers << user unless opted_not_to_follow end end end