sluggy 0.1.1 → 0.1.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.
- data/lib/sluggy.rb +6 -2
- data/sluggy-0.1.1.gem +0 -0
- data/sluggy.gemspec +1 -1
- data/test/sluggy_test.rb +26 -2
- data/test/test_helper.rb +1 -6
- metadata +7 -6
data/lib/sluggy.rb
CHANGED
@@ -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
|
-
|
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 =
|
38
|
+
last_number = conflict.send(slug_column).gsub(/^#{Regexp.quote(slug)}--/, '').to_i
|
35
39
|
slug << "--#{last_number+1}"
|
36
40
|
end
|
37
41
|
|
data/sluggy-0.1.1.gem
ADDED
Binary file
|
data/sluggy.gemspec
CHANGED
data/test/sluggy_test.rb
CHANGED
@@ -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
|
data/test/test_helper.rb
CHANGED
@@ -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.
|
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-
|
12
|
+
date: 2012-05-29 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
16
|
-
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: *
|
24
|
+
version_requirements: *70281588899640
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
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: *
|
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
|