Module: Sequel::Plugins::Schema::ClassMethods

Defined in:
lib/sequel/plugins/schema.rb

Instance Method Summary collapse

Instance Method Details

#create_table(*args, &block) ⇒ Object

Creates table, using the column information from set_schema.



26
27
28
29
30
31
# File 'lib/sequel/plugins/schema.rb', line 26

def create_table(*args, &block)
  set_schema(*args, &block) if block
  db.create_table(table_name, :generator=>@schema)
  @db_schema = get_db_schema(true)
  columns
end

#create_table!(*args, &block) ⇒ Object

Drops the table if it exists and then runs create_table. Should probably not be used except in testing.



35
36
37
38
# File 'lib/sequel/plugins/schema.rb', line 35

def create_table!(*args, &block)
  drop_table?
  create_table(*args, &block)
end

#create_table?(*args, &block) ⇒ Boolean

Creates the table unless the table already exists

Returns:

  • (Boolean)


41
42
43
# File 'lib/sequel/plugins/schema.rb', line 41

def create_table?(*args, &block)
  create_table(*args, &block) unless table_exists?
end

#drop_tableObject

Drops table. If the table doesn’t exist, this will probably raise an error.



46
47
48
# File 'lib/sequel/plugins/schema.rb', line 46

def drop_table
  db.drop_table(table_name)
end

#drop_table?Boolean

Drops table if it already exists, do nothing if it doesn’t exist.

Returns:

  • (Boolean)


51
52
53
# File 'lib/sequel/plugins/schema.rb', line 51

def drop_table?
  db.drop_table?(table_name)
end

#schemaObject

Returns table schema created with set_schema for direct descendant of Model. Does not retreive schema information from the database, see db_schema if you want that.



58
59
60
# File 'lib/sequel/plugins/schema.rb', line 58

def schema
  @schema || (superclass.schema unless superclass == Model)
end

#set_schema(name = nil, &block) ⇒ Object

Defines a table schema (see Schema::CreateTableGenerator for more information).

This is only needed if you want to use the create_table/create_table! methods. Will also set the dataset if you provide a name, as well as setting the primary key if you defined one in the passed block.

In general, it is a better idea to use migrations for production code, as migrations allow changes to existing schema. set_schema is mostly useful for test code or simple examples.



71
72
73
74
75
# File 'lib/sequel/plugins/schema.rb', line 71

def set_schema(name = nil, &block)
  set_dataset(db[name]) if name
  @schema = db.create_table_generator(&block)
  set_primary_key(@schema.primary_key_name) if @schema.primary_key_name
end

#table_exists?Boolean

Returns true if table exists, false otherwise.

Returns:

  • (Boolean)


78
79
80
# File 'lib/sequel/plugins/schema.rb', line 78

def table_exists?
  db.table_exists?(table_name)
end