From a91c0bd0e03770a575bf2f17b097e7f43080f445 Mon Sep 17 00:00:00 2001 From: Matt Jones Date: Mon, 30 Nov 2009 18:58:55 -0500 Subject: [PATCH] [#345 state:resolved] handle creating STI base along with subclasses in migration generator --- hobofields/lib/hobo_fields/migration_generator.rb | 2 +- hobofields/lib/hobo_fields/model_extensions.rb | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/hobofields/lib/hobo_fields/migration_generator.rb b/hobofields/lib/hobo_fields/migration_generator.rb index 7a3c9ecc6..3ce3ff94b 100644 --- a/hobofields/lib/hobo_fields/migration_generator.rb +++ b/hobofields/lib/hobo_fields/migration_generator.rb @@ -76,7 +76,7 @@ def load_rails_models # ActiveRecord::Base, excluding anything in the CGI module def table_model_classes load_rails_models - ActiveRecord::Base.send(:subclasses).where.descends_from_active_record?.reject {|c| c.name.starts_with?("CGI::") } + ActiveRecord::Base.send(:subclasses).reject {|c| (c.base_class != c) || c.name.starts_with?("CGI::") } end diff --git a/hobofields/lib/hobo_fields/model_extensions.rb b/hobofields/lib/hobo_fields/model_extensions.rb index 9c234f2ac..fe9e33150 100644 --- a/hobofields/lib/hobo_fields/model_extensions.rb +++ b/hobofields/lib/hobo_fields/model_extensions.rb @@ -25,12 +25,13 @@ def self.inherited(klass) fields do |f| f.field(inheritance_column, :string) end - index(inheritance_column) unless index_specs.*.fields.include?([inheritance_column]) + index(inheritance_column) super end def self.index(fields, options = {}) - index_specs << HoboFields::IndexSpec.new(self, fields, options) + # don't double-index fields + index_specs << HoboFields::IndexSpec.new(self, fields, options) unless index_specs.*.fields.include?(Array.wrap(fields).*.to_s) end