Class: TagDb::CreateDb

Inherits:
Object
  • Object
show all
Defined in:
lib/tagutils/tags/schema.rb

Instance Method Summary collapse

Instance Method Details

#upObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/tagutils/tags/schema.rb', line 7

def up
ActiveRecord::Schema.define do

create_table :tags do |t|
t.string  :key,   null: false
t.string  :slug,  null: false
t.string  :name    # todo: make required?  -- note: was title formerly
t.integer :grade, null: false, default: 1  # grade/tier e.g. 1/2/3 for now - rename to rank why? why not??


# parent used for hierarchy (e.g. lets you use tag stacks/packs etc.)
t.references :parent     ## foreign_key: true -- check/todo: add foreign_key, add index: false - why? why not?

# todo: use only t.datetime :created_at (do we get ar magic? is updated used/needed??)
t.timestamps
end


add_index :tags, :key,  unique: true

create_table :taggings do |t|
t.references :tag,      null: false, index: false                     ## Note: do NOT auto-add index
t.references :taggable, null: false, index: false, polymorphic: true  ## Note: do NOT auto-add index

# todo: use only t.datetime :created_at (do we get ar magic? is updated used/needed??)
t.timestamps
end

add_index :taggings, :tag_id  ## note: add index "by hand" in AR5.0 gets auto-added (use index: false!!!)
add_index :taggings, [:taggable_id, :taggable_type]
add_index :taggings, [:taggable_id, :taggable_type, :tag_id], unique: true

end # Schema.define
end