class TagDb::CreateDb
Public Instance Methods
up()
click to toggle source
# 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