Class: Enumeration

Inherits:
ApplicationRecord show all
Includes:
Redmine::SubclassFactory
Defined in:
app/models/enumeration.rb

Overview

Redmine - project management software Copyright © 2006- Jean-Philippe Lang

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Redmine::SubclassFactory

included

Methods inherited from ApplicationRecord

human_attribute_name

Class Method Details

.defaultObject



45
46
47
48
49
50
51
52
53
54
55
# File 'app/models/enumeration.rb', line 45

def self.default
  # Creates a fake default scope so Enumeration.default will check
  # it's type.  STI subclasses will automatically add their own
  # types to the finder.
  if self.descends_from_active_record?
    where(:is_default => true, :type => 'Enumeration').first
  else
    # STI classes are
    where(:is_default => true).first
  end
end

.get_subclassesObject

Returns the Subclasses of Enumeration. Each Subclass needs to be required in development mode.

Note: subclasses is protected in ActiveRecord



105
106
107
# File 'app/models/enumeration.rb', line 105

def self.get_subclasses
  subclasses
end

.overriding_change?(new, previous) ⇒ Boolean

Does the new Hash override the previous Enumeration?

Returns:

  • (Boolean)


110
111
112
113
114
115
116
117
# File 'app/models/enumeration.rb', line 110

def self.overriding_change?(new, previous)
  if (same_active_state?(new['active'], previous.active)) &&
        same_custom_values?(new, previous)
    return false
  else
    return true
  end
end

.same_active_state?(new, previous) ⇒ Boolean

Are the new and previous fields equal?

Returns:

  • (Boolean)


131
132
133
134
# File 'app/models/enumeration.rb', line 131

def self.same_active_state?(new, previous)
  new = (new == "1" ? true : false)
  return new == previous
end

.same_custom_values?(new, previous) ⇒ Boolean

Does the new Hash have the same custom values as the previous Enumeration?

Returns:

  • (Boolean)


120
121
122
123
124
125
126
127
128
# File 'app/models/enumeration.rb', line 120

def self.same_custom_values?(new, previous)
  previous.custom_field_values.each do |custom_value|
    if custom_value.to_s != new["custom_field_values"][custom_value.custom_field_id.to_s].to_s
      return false
    end
  end

  return true
end

Instance Method Details

#<=>(enumeration) ⇒ Object



93
94
95
96
97
# File 'app/models/enumeration.rb', line 93

def <=>(enumeration)
  return nil unless enumeration.is_a?(Enumeration)

  position <=> enumeration.position
end

#check_defaultObject



62
63
64
65
66
# File 'app/models/enumeration.rb', line 62

def check_default
  if is_default? && is_default_changed?
    Enumeration.where({:type => type}).update_all({:is_default => false})
  end
end

#destroy(reassign_to = nil) ⇒ Object

Destroy the enumeration If a enumeration is specified, objects are reassigned



86
87
88
89
90
91
# File 'app/models/enumeration.rb', line 86

def destroy(reassign_to = nil)
  if reassign_to && reassign_to.is_a?(Enumeration)
    self.transfer_relations(reassign_to)
  end
  destroy_without_reassign
end

#destroy_without_reassignObject



82
# File 'app/models/enumeration.rb', line 82

alias :destroy_without_reassign :destroy

#in_use?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'app/models/enumeration.rb', line 73

def in_use?
  self.objects_count != 0
end

#is_override?Boolean

Is this enumeration overriding a system level enumeration?

Returns:

  • (Boolean)


78
79
80
# File 'app/models/enumeration.rb', line 78

def is_override?
  !self.parent.nil?
end

#objects_countObject

Overloaded on concrete classes



69
70
71
# File 'app/models/enumeration.rb', line 69

def objects_count
  0
end

#option_nameObject

Overloaded on concrete classes



58
59
60
# File 'app/models/enumeration.rb', line 58

def option_name
  nil
end

#to_sObject



99
# File 'app/models/enumeration.rb', line 99

def to_s; name end