module Rostra class Question < ActiveRecord::Base 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 } validates :title, :presence => true, :uniqueness => true, :length => { :minimum => 15 } validates :user, :presence => true validates :tag_list, :presence => true 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 def unique_page_views impressionist_count(filter: :ip_address) 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