Sha256: 73ba86b7be2231e5905add717c58330f225c4a74da41216dae4ed0a0677687cf

Contents?: true

Size: 1.16 KB

Versions: 4

Compression:

Stored size: 1.16 KB

Contents

class Poll < ActiveRecord::Base
  has_many :choices, :dependent => :destroy
  validates_presence_of :question
  validates_presence_of :post
  has_many :votes, :dependent => :destroy
  belongs_to :post
  attr_accessible :question
      
  def voted?(user)
    !self.votes.find_by_user_id(user.id).nil?
  end
  
  def add_choices(choices)
    choices.each do |description|
      choice = self.choices.new(:description => description)
      choice.save
    end
  end

  def self.find_recent(options = {})
    options.reverse_merge! :limit => 5
    find(:all, :order => "polls.created_at desc", :limit => options[:limit], :include => [:post => :user])
  end

  def self.find_popular(options = {})
    options.reverse_merge! :limit => 5, :since => 10.days.ago
    
    find(:all, :order => "polls.votes_count desc", 
      :limit => options[:limit], 
      :include => [:post => :user],
      :conditions => ["polls.created_at > ?", options[:since]]
    )
  end

  def self.find_popular_in_category(category, options = {})
    options.reverse_merge! :limit => 5
    self.includes(:post).order('polls.votes_count desc').limit(options[:limit]).where('posts.category_id = ?', category.id)
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
community_engine-2.3.1 app/models/poll.rb
community_engine-2.3.0 app/models/poll.rb
community_engine-2.1.0 app/models/poll.rb
community_engine-2.0.0 app/models/poll.rb