Sha256: 6d5f6d9b71f6a6718b97d48ae697abb5fb74dd17f7efa9877eda6f8112d05ce5
Contents?: true
Size: 1.88 KB
Versions: 6
Compression:
Stored size: 1.88 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 puts "Error need two singular models : example : user product" 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