Replaces Enumeration.get_values and Enumeration.default with named scopes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2472 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
1 parent
13e2c727cf
commit
4601ed2f3a
17 files changed
+51
-39
No files matched your search
@@ -31,7 +31,7 @@ class Document < ActiveRecord::Base
|
||||
|
||||
def after_initialize
|
||||
if new_record?
|
||||
self.category ||= Enumeration.default('DCAT')
|
||||
self.category ||= Enumeration.document_categories.default
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -26,17 +26,29 @@ class Enumeration < ActiveRecord::Base
|
||||
|
||||
# Single table inheritance would be an option
|
||||
OPTIONS = {
|
||||
"IPRI" => {:label => :enumeration_issue_priorities, :model => Issue, :foreign_key => :priority_id},
|
||||
"DCAT" => {:label => :enumeration_doc_categories, :model => Document, :foreign_key => :category_id},
|
||||
"ACTI" => {:label => :enumeration_activities, :model => TimeEntry, :foreign_key => :activity_id}
|
||||
"IPRI" => {:label => :enumeration_issue_priorities, :model => Issue, :foreign_key => :priority_id, :scope => :priorities},
|
||||
"DCAT" => {:label => :enumeration_doc_categories, :model => Document, :foreign_key => :category_id, :scope => :document_categories},
|
||||
"ACTI" => {:label => :enumeration_activities, :model => TimeEntry, :foreign_key => :activity_id, :scope => :activities}
|
||||
}.freeze
|
||||
|
||||
def self.get_values(option)
|
||||
find(:all, :conditions => {:opt => option}, :order => 'position')
|
||||
# Creates a named scope for each type of value. The scope has a +default+ method
|
||||
# that returns the default value, or nil if no value is set as default.
|
||||
# Example:
|
||||
# Enumeration.priorities
|
||||
# Enumeration.priorities.default
|
||||
OPTIONS.each do |k, v|
|
||||
next unless v[:scope]
|
||||
named_scope v[:scope], :conditions => { :opt => k }, :order => 'position' do
|
||||
def default
|
||||
find(:first, :conditions => { :is_default => true })
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.default(option)
|
||||
find(:first, :conditions => {:opt => option, :is_default => true}, :order => 'position')
|
||||
named_scope :values, lambda {|opt| { :conditions => { :opt => opt }, :order => 'position' } } do
|
||||
def default
|
||||
find(:first, :conditions => { :is_default => true })
|
||||
end
|
||||
end
|
||||
|
||||
def option_name
|
||||
|
||||
+1
-1
@@ -63,7 +63,7 @@ class Issue < ActiveRecord::Base
|
||||
if new_record?
|
||||
# set default values for new records only
|
||||
self.status ||= IssueStatus.default
|
||||
self.priority ||= Enumeration.default('IPRI')
|
||||
self.priority ||= Enumeration.priorities.default
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ class TimeEntry < ActiveRecord::Base
|
||||
|
||||
def after_initialize
|
||||
if new_record? && self.activity.nil?
|
||||
if default_activity = Enumeration.default('ACTI')
|
||||
if default_activity = Enumeration.activities.default
|
||||
self.activity_id = default_activity.id
|
||||
end
|
||||
end
|
||||
|
||||
Reference in new issue
Block a user