Clase para los departamentos en los que se pueden clasificar los News y Events. Es subclase de Organization, por lo que su tabla es
organizations
Legislaturas: se usan para poder separar los departamentos por legislatura Las entidades no tienen asignada ninguna legislatura
Devuelve el departamento con la etiqueta indicada.
# File app/models/department.rb, line 58 def self.find_by_label(dept_label) tag_name = "_"+dept_label.gsub(/[^\w_]/,'') dept = self.tag_names.include?(tag_name) ? self.find_by_tag_name(tag_name) : nil dept end
Array de departamentos en formato óptimo para hacer un select en un view.
El formato del output es [[[dep.nombre, dep.id], [[subdep1.nombre,
subdep1.id], [subdep2.nombre, subdep2.id]...]], [[dep2.nombre, dep2.id],
[...]]]
# File app/models/department.rb, line 67 def self.grouped_options opts = [] self.find(:all, :order => "term, position").each do |dept| opts.push [[dept.name, dept.id], dept.organizations.map {|d| [d.name, d.id]}] end opts end
Cada departamento tiene asociado un tag oculto que se añade automáticamente
# File app/models/department.rb, line 47 def self.tag_names self.find(:all, :select => "tag_name").map {|d| d.tag_name} end
# File app/models/department.rb, line 81 def department_editors self.members.approved.find(:all, :conditions => "type='DepartmentEditor'") end
# File app/models/department.rb, line 85 def department_members_official_commenters self.members.approved.find(:all, :conditions => "type='DepartmentMember'").select {|u| u.is_official_commenter?} end
La etiqueta del departamento es su tag oculto sin el ‘_’ al principio. Se usa en las URL de acciones que muestran contentido sólo para un departamento.
# File app/models/department.rb, line 53 def label self.tag_name.gsub(/^_+/,'') end
# File app/models/department.rb, line 75 def official_commenters candidates = self.members.approved list = candidates.select {|u| u.is_official_commenter?} list end