Class Poll
In: app/models/poll.rb
Parent: ActiveRecord::Base

Methods

Included Modules

Sluggable DraftUtils::InstanceMethods FerretMethods

Constants

TARGET_LOGGED_USER = 1
TARGET_ANONYMOUS = 2
TARGET_BOTH = 3
NO_TARGET_SPECIFIED_VOTE = nil

Public Class methods

[Source]

    # File app/models/poll.rb, line 44
44:   def self.current
45:     # publ = self.published
46:     # active = publ.find_all {|p| p.active? }
47:     # c = active.blank? ? publ.first : active.first
48:     # c
49:     self.published.active.first
50:   end

Public Instance methods

Devuelve true si la pregunta se puede votar

[Source]

    # File app/models/poll.rb, line 79
79:   def active?
80:     self.published? && !self.outdated?
81:   end

Método que se usa en el enalce "Me gusta" de Facebook.

[Source]

     # File app/models/poll.rb, line 127
127:   def body
128:     self.title
129:   end

Cerrar la encuesta: cambiar la fecha final por ayer y marcar los comentarios como cerrados.

[Source]

     # File app/models/poll.rb, line 122
122:   def close!
123:     self.update_attributes(:comments_closed => true, :ends_at => (self.ends_at > Time.now) ? Time.now : self.ends_at)
124:   end

[Source]

    # File app/models/poll.rb, line 83
83:   def closed?
84:     self.outdated? && self.comments_closed?
85:   end

El nombre del cookie que indica que la persona ha votado.

[Source]

    # File app/models/poll.rb, line 53
53:   def cookie_name
54:     "irekia_poll_#{self.id}"
55:   end

[Source]

    # File app/models/poll.rb, line 87
87:   def department
88:     self.organization.department if self.organization
89:   end

[Source]

     # File app/models/poll.rb, line 101
101:   def existing_option_attributes=(option_attributes)
102:     self.options.reject(&:new_record?).each do |opt|
103:       attributes = option_attributes[opt.id.to_s]
104:       if attributes
105:         opt.attributes = attributes
106:       else
107:         options.delete(opt)
108:       end
109:     end
110:   end

Devuleve true si la pregunta tiene respuestas.

[Source]

    # File app/models/poll.rb, line 74
74:   def has_answers?
75:     self.answers.count > 0
76:   end

Icono con el resultado de la encuesta. Por ahora es el mismo para todas, pero más adeante cada icono corresponderá a las respuestas de la pregunta.

[Source]

     # File app/models/poll.rb, line 133
133:   def icon
134:     "poll_icon.gif"
135:   end

Número máximo de respuestas a una pregunta que puede dar una persona.

[Source]

    # File app/models/poll.rb, line 58
58:   def max_multiple
59:     1
60:   end

[Source]

    # File app/models/poll.rb, line 91
91:   def new_option_attributes=(option_attributes)
92:     option_attributes.each do |attributes|
93:       options.build(attributes)
94:       opt = options.last
95:       if opt.position.to_i.eql?(0)
96:         opt.position = options.blank? ? 1: options.map {|opt| opt.position.to_i}.sort.last + 1
97:       end
98:     end
99:   end

Devuleve true si la pregunta ha caducado.

[Source]

    # File app/models/poll.rb, line 63
63:   def outdated?
64:     now = Time.now
65:     !self.ends_at.blank? && (self.ends_at < now)
66:   end

Encuestas publicadas anteriores a la actual

[Source]

     # File app/models/poll.rb, line 113
113:   def previous_active(opts = {})
114:     self.class.published.find(:all, :conditions => ["published_at < ? AND ends_at > ?", self.published_at, Time.now])
115:   end

[Source]

     # File app/models/poll.rb, line 117
117:   def previous_published(opts = {})
118:     self.class.published.find(:all, {:conditions => ["published_at < ?", self.published_at ]}.merge(opts))
119:   end

Devuleve true si la pregunta está publicada.

[Source]

    # File app/models/poll.rb, line 69
69:   def published?
70:     !draft && !published_at.blank? && published_at <= Time.now
71:   end

[Source]

     # File app/models/poll.rb, line 148
148:   def show_in_agencia
149:     false
150:   end

[Source]

     # File app/models/poll.rb, line 152
152:   def show_in_agencia?
153:     show_in_agencia
154:   end

[Source]

     # File app/models/poll.rb, line 140
140:   def show_in_irekia
141:     true
142:   end

[Source]

     # File app/models/poll.rb, line 144
144:   def show_in_irekia?
145:     show_in_irekia
146:   end

[Source]

    # File app/models/poll.rb, line 35
35:   def sync_draft_and_ends_at
36:     if self.draft?
37:       self.ends_at = nil
38:     end
39:   end

[Validate]