From 9c0467d35acc4a7ced8b8068f52f5d492a734ce8 Mon Sep 17 00:00:00 2001 From: Kir Date: Tue, 17 Jan 2012 15:20:51 +0200 Subject: Upgrade migration, refactoring --- .../inboxes/templates/upgrade_discussible.rb | 9 +++++ .../inboxes/upgrade_discussible_generator.rb | 40 ++++++++++++++++++++++ lib/inboxes/active_record_extension.rb | 6 +--- 3 files changed, 50 insertions(+), 5 deletions(-) create mode 100644 lib/generators/inboxes/templates/upgrade_discussible.rb create mode 100644 lib/generators/inboxes/upgrade_discussible_generator.rb (limited to 'lib') diff --git a/lib/generators/inboxes/templates/upgrade_discussible.rb b/lib/generators/inboxes/templates/upgrade_discussible.rb new file mode 100644 index 0000000..dc39dd9 --- /dev/null +++ b/lib/generators/inboxes/templates/upgrade_discussible.rb @@ -0,0 +1,9 @@ +class UpgradeDiscussibleInboxes < ActiveRecord::Migration + def self.change + add_column :discussions, :discussible_id, :integer + end + + def self.down + remove_column :discussions, :discussible_id + end +end diff --git a/lib/generators/inboxes/upgrade_discussible_generator.rb b/lib/generators/inboxes/upgrade_discussible_generator.rb new file mode 100644 index 0000000..dd85972 --- /dev/null +++ b/lib/generators/inboxes/upgrade_discussible_generator.rb @@ -0,0 +1,40 @@ +require 'rails/generators' +require 'rails/generators/migration' + +module Inboxes + module Generators + class UpgradeDiscussibleGenerator < Rails::Generators::Base + include Rails::Generators::Migration + + source_root File.expand_path("../templates", __FILE__) + + # desc "Generates migration for Discussion, Message, Speaker and DiscussionView models" + + def self.orm + Rails::Generators.options[:rails][:orm] + end + + # def self.source_root + # File.join(File.dirname(__FILE__), 'templates', (orm.to_s unless orm.class.eql?(String)) ) + # end + + def self.orm_has_migration? + [:active_record].include? orm + end + + def self.next_migration_number(dirname) + if ActiveRecord::Base.timestamped_migrations + migration_number = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i + migration_number += 1 + migration_number.to_s + else + "%.3d" % (current_migration_number(dirname) + 1) + end + end + + def copy_migration + migration_template 'upgrade_discussible.rb', 'db/migrate/upgrade_discussible_inboxes.rb' + end + end + end +end diff --git a/lib/inboxes/active_record_extension.rb b/lib/inboxes/active_record_extension.rb index d6e7e36..b3c3231 100644 --- a/lib/inboxes/active_record_extension.rb +++ b/lib/inboxes/active_record_extension.rb @@ -5,11 +5,7 @@ module Inboxes # prefix = options[:prefix] || "with" has_many :speakers, :dependent => :destroy - has_many :discussions, :through => :speakers - end - - def acts_as_discussable - has_many :discussions, :as => :discussable + has_many :discussions, :as => :discussable, :through => :speakers end end end -- cgit v1.2.3