categoryz3 0.5 → 0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,6 +5,7 @@ module Categoryz3
5
5
  has_many :direct_items , class_name: 'Categoryz3::Item' , inverse_of: :category , dependent: :destroy
6
6
  has_many :child_items , class_name: 'Categoryz3::ChildItem' , inverse_of: :category , dependent: :destroy
7
7
  validates :name , presence: true
8
+ validates_with Categoryz3::Validators::ParentCategoryValidator
8
9
 
9
10
  scope :root_categories, -> { where(parent_id: nil) }
10
11
  scope :parent_categories, -> { root_categories }
@@ -0,0 +1,14 @@
1
+ module Categoryz3
2
+ module Validators
3
+ class ParentCategoryValidator < ActiveModel::Validator
4
+ def validate(record)
5
+ if record.parent_id && record.parent.path.map{ |category| category.id }.include?(record.id)
6
+ record.errors[:parent] << "Parent cycle dependency"
7
+ end
8
+ if record.id && record.parent_id == record.id
9
+ record.errors[:parent] << "Can't be parent of itself!"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  module Categoryz3
2
- VERSION = "0.5"
2
+ VERSION = "0.6"
3
3
  end
data/lib/categoryz3.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "categoryz3/engine"
2
2
  require "categoryz3/categorizable"
3
3
  require "categoryz3/validators/child_item_category_validator"
4
+ require "categoryz3/validators/parent_category_validator"
4
5
 
5
6
  module Categoryz3
6
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: categoryz3
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.5'
4
+ version: '0.6'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -109,6 +109,7 @@ files:
109
109
  - lib/categoryz3/categorizable.rb
110
110
  - lib/categoryz3/engine.rb
111
111
  - lib/categoryz3/validators/child_item_category_validator.rb
112
+ - lib/categoryz3/validators/parent_category_validator.rb
112
113
  - lib/categoryz3/version.rb
113
114
  - lib/categoryz3.rb
114
115
  - lib/generators/categoryz3/migrations/migrations_generator.rb
@@ -131,7 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
132
  version: '0'
132
133
  segments:
133
134
  - 0
134
- hash: 1788143576849423872
135
+ hash: 4499004963160732104
135
136
  required_rubygems_version: !ruby/object:Gem::Requirement
136
137
  none: false
137
138
  requirements:
@@ -140,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
141
  version: '0'
141
142
  segments:
142
143
  - 0
143
- hash: 1788143576849423872
144
+ hash: 4499004963160732104
144
145
  requirements: []
145
146
  rubyforge_project:
146
147
  rubygems_version: 1.8.24