Sha256: 86c46acf2147c7c2ad3679b7d5892dd4675efff02549bf03616c80c6a957fb76
Contents?: true
Size: 1.9 KB
Versions: 6
Compression:
Stored size: 1.9 KB
Contents
# encoding : utf-8 class BeautifulJointableGenerator < Rails::Generators::Base require 'beautiful_scaffold_common_methods' include BeautifulScaffoldCommonMethods source_root File.expand_path('../templates', __FILE__) argument :join_models, :type => :array, :default => [], :banner => "model model" def create_join_table if join_models.length != 2 then say_status("Error", "Error need two singular models : example : user product", :red) else sorted_model = join_models.sort # Generate migration migration_content_up = " create_table :#{sorted_model[0].pluralize}_#{sorted_model[1].pluralize}, :id => false do |t| t.integer :#{sorted_model[0]}_id t.integer :#{sorted_model[1]}_id end add_index :#{sorted_model[0].pluralize}_#{sorted_model[1].pluralize}, [:#{sorted_model[0]}_id, :#{sorted_model[1]}_id] " migration_content_down = "\n drop_table :#{sorted_model[0].pluralize}_#{sorted_model[1].pluralize} " migration_name = "create_join_table_for_#{sorted_model[0]}_and_#{sorted_model[1]}" generate("migration", migration_name) filename = Dir.glob("db/migrate/*#{migration_name}.rb")[0] inject_into_file(filename, migration_content_up, :after => "def up") inject_into_file(filename, migration_content_down, :after => "def down") # Add habtm relation inject_into_file("app/models/#{sorted_model[0]}.rb", "\n has_and_belongs_to_many :#{sorted_model[1].pluralize}", :after => "ActiveRecord::Base") inject_into_file("app/models/#{sorted_model[1]}.rb", "\n has_and_belongs_to_many :#{sorted_model[0].pluralize}", :after => "ActiveRecord::Base") inject_into_file("app/models/#{sorted_model[0]}.rb", ":#{sorted_model[1]}_ids, ", :after => "attr_accessible ") inject_into_file("app/models/#{sorted_model[1]}.rb", ":#{sorted_model[0]}_ids, ", :after => "attr_accessible ") end end end
Version data entries
6 entries across 6 versions & 1 rubygems