my_tags 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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: []