sluggy 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -27,11 +27,15 @@ module Sluggy
27
27
 
28
28
  exists = self.class.where("#{slug_column} = ? OR #{slug_column} LIKE ?", slug, "#{slug}--%")
29
29
  exists = exists.where('id != ?', id) unless new_record?
30
- exists = exists.where("#{slug_scope} = ?", send(slug_scope)) if slug_scope
30
+ if slug_scope
31
+ Array(slug_scope).each do |sc|
32
+ exists = exists.where("#{sc} = ?", send(sc))
33
+ end
34
+ end
31
35
  exists = exists.order("LENGTH(#{slug_column}) DESC, #{slug_column} DESC")
32
36
 
33
37
  if conflict = exists.first
34
- last_number = conflict.send(slug_column).gsub(/^#{Regexp.quote(slug)}--/, '').to_i
38
+ last_number = conflict.send(slug_column).gsub(/^#{Regexp.quote(slug)}--/, '').to_i
35
39
  slug << "--#{last_number+1}"
36
40
  end
37
41
 
Binary file
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'sluggy'
3
- s.version = '0.1.1'
3
+ s.version = '0.1.2'
4
4
  s.authors = ['Ary Djmal']
5
5
  s.email = ['arydjmal@gmail.com']
6
6
  s.summary = 'Minimal slugging/permalink gem for ActiveRecord. Nothing fancy.'
@@ -1,9 +1,12 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class SluggyDefaultsTest < Test::Unit::TestCase
4
+ class Post < ActiveRecord::Base
5
+ slug_for :title
6
+ end
7
+
4
8
  def setup
5
9
  Post.delete_all
6
- Post.send(:slug_for, :title)
7
10
  Post.create!(:title => 'First Post')
8
11
  end
9
12
 
@@ -42,9 +45,12 @@ class SluggyDefaultsTest < Test::Unit::TestCase
42
45
  end
43
46
 
44
47
  class SluggyWithOptionsTest < Test::Unit::TestCase
48
+ class User < ActiveRecord::Base
49
+ slug_for :name, {:column => :handle, :scope => :account_id}
50
+ end
51
+
45
52
  def setup
46
53
  User.delete_all
47
- User.send(:slug_for, :name, {:column => :handle, :scope => :account_id})
48
54
  User.create!(:name => 'Ary Djmal', :account_id => 1)
49
55
  end
50
56
 
@@ -81,3 +87,21 @@ class SluggyWithOptionsTest < Test::Unit::TestCase
81
87
  assert_equal('ary-djmal--1', user.reload.handle)
82
88
  end
83
89
  end
90
+
91
+ class SluggyWithScopeArrayTest < Test::Unit::TestCase
92
+ class User < ActiveRecord::Base
93
+ slug_for :name, {:column => :handle, :scope => [:account_id, :deleted]}
94
+ end
95
+
96
+ def setup
97
+ User.delete_all
98
+ User.create!(:name => 'Ary Djmal', :account_id => 1)
99
+ end
100
+
101
+ def test_with_same_name
102
+ user = User.create!(:name => 'Ary Djmal', :account_id => 1)
103
+ assert_equal('ary-djmal--1', user.handle)
104
+ user = User.create!(:name => 'Ary Djmal', :account_id => 1, :deleted => true)
105
+ assert_equal('ary-djmal', user.handle)
106
+ end
107
+ end
@@ -15,11 +15,6 @@ ActiveRecord::Schema.define do
15
15
  create_table :users do |t|
16
16
  t.string :name, :handle
17
17
  t.integer :account_id
18
+ t.boolean :deleted, :default => false
18
19
  end
19
20
  end
20
-
21
- class Post < ActiveRecord::Base
22
- end
23
-
24
- class User < ActiveRecord::Base
25
- end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sluggy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-02 00:00:00.000000000Z
12
+ date: 2012-05-29 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &70299863568480 !ruby/object:Gem::Requirement
16
+ requirement: &70281588899640 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70299863568480
24
+ version_requirements: *70281588899640
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70299863559640 !ruby/object:Gem::Requirement
27
+ requirement: &70281588897780 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70299863559640
35
+ version_requirements: *70281588897780
36
36
  description:
37
37
  email:
38
38
  - arydjmal@gmail.com
@@ -45,6 +45,7 @@ files:
45
45
  - ./Rakefile
46
46
  - ./README.md
47
47
  - ./sluggy-0.1.0.gem
48
+ - ./sluggy-0.1.1.gem
48
49
  - ./sluggy.gemspec
49
50
  - ./test/sluggy_test.rb
50
51
  - ./test/test_helper.rb