Module: ActiveRecord::Acts::EavModel::InstanceMethods::ClassMethods

Defined in:
lib/acts_as_eav_model.rb

Instance Method Summary collapse

Instance Method Details

#create_attribute_table(options = {}) ⇒ Object

Rake migration task to create the versioned table using options passed to has_eav_behavior



297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
# File 'lib/acts_as_eav_model.rb', line 297

def create_attribute_table(options = {})
  eav_options.keys.each do |key|
    continue if eav_options[key][:parent] != self.name
    model = eav_options[key][:class_name]

    return if connection.tables.include?(eav_options[model][:table_name])

    self.connection.create_table(eav_options[model][:table_name], options) do |t|
      t.integer eav_options[model][:foreign_key], :null => false
      t.string eav_options[model][:name_field], :null => false
      t.string eav_options[model][:value_field], :null => false

      t.timestamps
    end

    self.connection.add_index eav_options[model][:table_name], eav_options[model][:foreign_key]
  end

end

#drop_attribute_table(options = {}) ⇒ Object

Rake migration task to drop the attribute table



320
321
322
323
324
325
326
327
# File 'lib/acts_as_eav_model.rb', line 320

def drop_attribute_table(options = {})
  eav_options.keys.each do |key|
    continue if eav_options[key][:parent] != self.name
    model = eav_options[key][:class_name]
    self.connection.drop_table eav_options[model][:table_name]
  end

end