Sha256: f2b71b6e3bd0afb5a99d377c661a1681b4d0b8e2b51d06231952da804348c2c0
Contents?: true
Size: 1.71 KB
Versions: 9
Compression:
Stored size: 1.71 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 = " 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_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, :after => "def change") # 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
9 entries across 9 versions & 1 rubygems