my_tags 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38e17cfa04d2dbba23780a28aca45f071273d438
4
- data.tar.gz: bc8aaf17fd17bb78f1785216fbad90729027e5a3
3
+ metadata.gz: 826c46163180baa502768530f2577a7b707df855
4
+ data.tar.gz: a3439e8d3e217b79bf5fe6362b06dd7c12d53602
5
5
  SHA512:
6
- metadata.gz: bca83084252ff42a9484900784f9de0d39f9fd6efd2ddeaa6f0a5b40c2967a74f66af3d7a426c3f20d8c0d5b8d76e10a66e3259ec48c44943ee0d7f18cae9ac1
7
- data.tar.gz: 1417b98185cbe7aa7785486382def51eee591865b6abf9dcf97b46e4ee483ac5770d55073d33127cdda1417c1fe16da5ceaf8c35fc1ae2236bfb341b52c268b8
6
+ metadata.gz: 39e5ecc03e06811ac8e419c88c175f1dacb1c15f4e317e0cde60b976e11ae7102ae0ded3da17acc7f852236c2f5c5fb9bb0632a497c582c09454b54674f62719
7
+ data.tar.gz: c371b5ae5a91024a68d45b539c07d398d840036991bddd446753e2565517c883ec8b6e926ac98d63cbcbf0eadd3f15d78af5f9bcfb97dc4cae186fda804e2e92
@@ -0,0 +1,5 @@
1
+ class MyTag::Tag < ActiveRecord::Base
2
+ has_many :taggings, :class_name => 'MyTags::Tagging', :dependent => :destroy
3
+
4
+ validates :name, :presence => true, :uniqueness => true
5
+ end
@@ -0,0 +1,7 @@
1
+ class MyTags::Tagging < ActiveRecord::Base
2
+ belongs_to :taggable, :polymorphic => true
3
+ belongs_to :tag, :class_name => 'MyTags::Tag'
4
+
5
+ validates :taggable, :presence => true
6
+ validates :tag, :presence => true
7
+ end
@@ -0,0 +1,27 @@
1
+ class TagTables < ActiveRecord::Migration
2
+ def up
3
+ create_table :taggings do |t|
4
+ t.integer :tag_id, :null => false
5
+ t.integer :taggable_id, :null => false
6
+ t.string :taggable_type, :null => false
7
+ t.timestamps
8
+ end
9
+
10
+ add_index :taggings, :tag_id
11
+ add_index :taggings, [:taggable_type, :taggable_id]
12
+ add_index :taggings, [:taggable_type, :taggable_id, :tag_id],
13
+ :unique => true, :name => 'unique_taggings'
14
+
15
+ create_table :tags do |t|
16
+ t.string :name, :null => false
17
+ t.timestamps
18
+ end
19
+
20
+ add_index :tags, :name, :unique => true
21
+ end
22
+
23
+ def down
24
+ drop_table :tags
25
+ drop_table :taggings
26
+ end
27
+ end
@@ -0,0 +1,12 @@
1
+ module MyTags::ActiveRecord
2
+ def self.included(base)
3
+ base.extend MyTags::ActiveRecord::ClassMethods
4
+ end
5
+
6
+ module ClassMethods
7
+ def has_many_tags
8
+ has_many :taggings, :class_name => 'MyTags::Tagging', :as => :taggable, :dependent => :destroy
9
+ has_many :tags, :class_name => 'MyTags::Tag', :through => :taggings
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ require 'rails/engine'
2
+
3
+ class MyTags::Engine < Rails::Engine
4
+ engine_name :my_tags
5
+
6
+ ActiveSupport.on_load :active_record do
7
+ include MyTags::ActiveRecord
8
+ end
9
+ end
data/lib/my_tags.rb CHANGED
@@ -0,0 +1,6 @@
1
+ module TagEchidna
2
+
3
+ end
4
+
5
+ require 'my_tags/active_record'
6
+ require 'my_tags/engine'
data/my_tags.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'my_tags'
3
- s.version = '0.0.1'
3
+ s.version = '0.0.2'
4
4
  s.authors = ['Vitaly Omelchenko']
5
5
  s.email = ['prosto.vint@gmail.com']
6
6
  s.homepage = 'https://github.com/vintyara/my_tags'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: my_tags
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vitaly Omelchenko
@@ -17,7 +17,12 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
+ - app/models/my_tags/tag.rb
21
+ - app/models/my_tags/tagging.rb
22
+ - db/migrate/1_tag_tables.rb
20
23
  - lib/my_tags.rb
24
+ - lib/my_tags/active_record.rb
25
+ - lib/my_tags/engine.rb
21
26
  - my_tags.gemspec
22
27
  homepage: https://github.com/vintyara/my_tags
23
28
  licenses: []