| Class | Poll |
| In: |
app/models/poll.rb
|
| Parent: | ActiveRecord::Base |
| TARGET_LOGGED_USER | = | 1 |
| TARGET_ANONYMOUS | = | 2 |
| TARGET_BOTH | = | 3 |
| NO_TARGET_SPECIFIED_VOTE | = | nil |
# 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
Devuelve true si la pregunta se puede votar
# 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.
# 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.
# 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
# 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.
# File app/models/poll.rb, line 53
53: def cookie_name
54: "irekia_poll_#{self.id}"
55: end
# File app/models/poll.rb, line 87
87: def department
88: self.organization.department if self.organization
89: end
# 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.
# 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.
# 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.
# File app/models/poll.rb, line 58
58: def max_multiple
59: 1
60: end
# 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.
# 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
# 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
# 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.
# File app/models/poll.rb, line 69
69: def published?
70: !draft && !published_at.blank? && published_at <= Time.now
71: end