Files
redmine-budget-plugin/db/migrate/009_convert_member_rate_to_full_rates.rb

47 lines
1.7 KiB
Ruby

RateMigrationErrorMessage = "ERROR: The Rate plugin is not installed. Please install the Rate plugin or downgrade to version 0.1.0 of the Budget plugin."
begin
require_dependency 'rate'
rescue LoadError
raise Exception.new(RateMigrationErrorMessage)
end
require_dependency 'user'
require_dependency 'member'
class ConvertMemberRateToFullRates < ActiveRecord::Migration
def self.up
self.check_that_rate_plugin_is_installed
# Add a new Rate object for each Member
Member.find(:all, :conditions => ['rate IS NOT NULL']).each do |member|
say_with_time "Converting rate for #{member.user.to_s} - #{member.project.to_s}" do
# Need to find the first date for any TimeEntries #1924
first_time_entry = TimeEntry.find(:first,
:conditions => ['project_id = (?) AND user_id = (?)', member.project_id, member.user_id],
:order => 'spent_on ASC')
date_in_effect = first_time_entry.spent_on if first_time_entry
date_in_effect ||= member.created_on
rate = Rate.new({
:user => member.user,
:amount => member.rate,
:project => member.project,
:date_in_effect => date_in_effect
})
rate.save!
end
end
end
def self.down
self.check_that_rate_plugin_is_installed
raise ActiveRecord::IrreversibleMigration, "Can't move rates back onto the Members"
end
def self.check_that_rate_plugin_is_installed
raise Exception.new(RateMigrationErrorMessage) unless Object.const_defined?("Rate")
end
end