Class: MigrationEmitter
- Inherits:
-
Object
- Object
- MigrationEmitter
- Defined in:
- lib/generators/extra_user_attributes/migration_emitter.rb
Instance Attribute Summary collapse
-
#columns ⇒ Object
Returns the value of attribute columns.
-
#options ⇒ Object
Returns the value of attribute options.
-
#table_name ⇒ Object
Returns the value of attribute table_name.
Class Method Summary collapse
Instance Method Summary collapse
- #add_columns ⇒ Object
- #column(name, datatype, options = {}) ⇒ Object
- #create_table ⇒ Object
- #drop_table ⇒ Object
-
#initialize(table_name, initial = [], options = {}) ⇒ MigrationEmitter
constructor
A new instance of MigrationEmitter.
- #remove_columns ⇒ Object
Constructor Details
#initialize(table_name, initial = [], options = {}) ⇒ MigrationEmitter
Returns a new instance of MigrationEmitter.
6 7 8 9 10 |
# File 'lib/generators/extra_user_attributes/migration_emitter.rb', line 6 def initialize(table_name, initial = [], ={}) self.table_name = table_name self.columns = initial self. = end |
Instance Attribute Details
#columns ⇒ Object
Returns the value of attribute columns.
3 4 5 |
# File 'lib/generators/extra_user_attributes/migration_emitter.rb', line 3 def columns @columns end |
#options ⇒ Object
Returns the value of attribute options.
4 5 6 |
# File 'lib/generators/extra_user_attributes/migration_emitter.rb', line 4 def end |
#table_name ⇒ Object
Returns the value of attribute table_name.
2 3 4 |
# File 'lib/generators/extra_user_attributes/migration_emitter.rb', line 2 def table_name @table_name end |
Class Method Details
.entity(class_name, *initial) ⇒ Object
21 22 23 |
# File 'lib/generators/extra_user_attributes/migration_emitter.rb', line 21 def self.entity(class_name, *initial) return self.new(class_name.to_s.tableize.to_sym, initial) end |
.join_table(*classes) ⇒ Object
12 13 14 15 16 17 18 19 |
# File 'lib/generators/extra_user_attributes/migration_emitter.rb', line 12 def self.join_table(*classes) a = self.new classes.map_to(:to_s).map_to(:tableize).sort.join('_').to_sym (0..1).each {|i| a.column classes[i].foreign_key, :integer, :index=>:true } a.[:id] = false a end |
Instance Method Details
#add_columns ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'lib/generators/extra_user_attributes/migration_emitter.rb', line 42 def add_columns columns.map{|c| "add_column " + [table_name.inspect, c[:name].inspect, c[:datatype].inspect, map_inspect(c[:options].except(:index)) ].flatten.join(', ') }.join("\n ") + "\n " + create_indexes end |
#column(name, datatype, options = {}) ⇒ Object
25 26 27 |
# File 'lib/generators/extra_user_attributes/migration_emitter.rb', line 25 def column(name, datatype, ={}) self.columns << {:name=>name, :datatype=>datatype, :options=>} end |
#create_table ⇒ Object
29 30 31 32 33 34 35 36 |
# File 'lib/generators/extra_user_attributes/migration_emitter.rb', line 29 def create_table return " create_table #{create_table_def} do |t| #{columns.map{|c| coldef(c)}.join("\n ")} t.timestamps end " + create_indexes end |
#drop_table ⇒ Object
38 39 40 |
# File 'lib/generators/extra_user_attributes/migration_emitter.rb', line 38 def drop_table "drop_table #{table_name.inspect}" end |
#remove_columns ⇒ Object
51 52 53 |
# File 'lib/generators/extra_user_attributes/migration_emitter.rb', line 51 def remove_columns columns.map{|c| "remove_column #{table_name.inspect}, #{c[:name].inspect}"}.join("\n ") end |