has_unique_slug 0.1.4 → 0.1.5
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/README.md +6 -3
- data/has_unique_slug.gemspec +1 -0
- data/lib/has_unique_slug/version.rb +1 -1
- data/lib/has_unique_slug.rb +7 -7
- data/spec/has_unique_slug_spec.rb +3 -25
- data/spec/spec_helper.rb +6 -5
- metadata +58 -68
data/README.md
CHANGED
@@ -32,14 +32,16 @@ Optionally, a Proc can be used instead of a column name to create the slug:
|
|
32
32
|
You do not have to call parameterize on name, this will be done automatically. (You don't even need to add dash, a space will work fine)
|
33
33
|
|
34
34
|
|
35
|
-
|
35
|
+
Use the rails built-in convention for finding by an attribute.
|
36
|
+
|
37
|
+
Note: you will have to modify this if your slug column is set to something else.
|
36
38
|
|
37
39
|
class PostsController < ApplicationController
|
38
40
|
|
39
41
|
# ...
|
40
42
|
|
41
43
|
def show
|
42
|
-
@post = Post.
|
44
|
+
@post = Post.find_by_slug params[:id]
|
43
45
|
# you may still use find_by_id to find a record by the database id if need be
|
44
46
|
end
|
45
47
|
end
|
@@ -54,4 +56,5 @@ All the standard url helper methods will still work since `to_param` is overrid
|
|
54
56
|
|
55
57
|
- Add support for scopes
|
56
58
|
- Add support for database versioning
|
57
|
-
- Consider optimizing the method to ensure a unique slug
|
59
|
+
- Consider optimizing the method to ensure a unique slug
|
60
|
+
- Add rake task for rebuildings slugs
|
data/has_unique_slug.gemspec
CHANGED
data/lib/has_unique_slug.rb
CHANGED
@@ -51,13 +51,13 @@ module HasUniqueSlug
|
|
51
51
|
end
|
52
52
|
EOV
|
53
53
|
|
54
|
-
# Add find method to override ActiveRecord::Base.find.
|
55
|
-
# Note: find_by_id will still work to search for record by their database id.
|
56
|
-
instance_eval do
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
end
|
54
|
+
# # Add find method to override ActiveRecord::Base.find.
|
55
|
+
# # Note: find_by_id will still work to search for record by their database id.
|
56
|
+
# instance_eval do
|
57
|
+
# def find(*args)
|
58
|
+
# args.length == 1 ? where(slug_column => args.first).first : where(slug_column => args)
|
59
|
+
# end
|
60
|
+
# end
|
61
61
|
end
|
62
62
|
|
63
63
|
end
|
@@ -1,32 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
4
|
-
|
5
|
-
def setup_db
|
6
|
-
ActiveRecord::Schema.define(:version => 1) do
|
7
|
-
create_table :standards do |t|
|
8
|
-
t.column :title, :string
|
9
|
-
t.column :slug, :string
|
10
|
-
end
|
11
|
-
|
12
|
-
create_table :customs do |t|
|
13
|
-
t.column :name, :string
|
14
|
-
t.column :permalink, :string
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def teardown_db
|
20
|
-
ActiveRecord::Base.connection.tables.each do |t|
|
21
|
-
ActiveRecord::Base.connection.drop_table t
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
3
|
class Standard < ActiveRecord::Base
|
26
4
|
has_unique_slug
|
27
5
|
|
28
6
|
def self.table_name
|
29
|
-
"
|
7
|
+
"standard"
|
30
8
|
end
|
31
9
|
end
|
32
10
|
|
@@ -34,7 +12,7 @@ class Custom < ActiveRecord::Base
|
|
34
12
|
has_unique_slug :column => :permalink, :subject => :name
|
35
13
|
|
36
14
|
def self.table_name
|
37
|
-
"
|
15
|
+
"custom"
|
38
16
|
end
|
39
17
|
end
|
40
18
|
|
@@ -42,7 +20,7 @@ class Custom2 < ActiveRecord::Base
|
|
42
20
|
has_unique_slug :column => :permalink, :subject => Proc.new {|record| "zcvf #{record.name} zxvf"}
|
43
21
|
|
44
22
|
def self.table_name
|
45
|
-
"
|
23
|
+
"custom"
|
46
24
|
end
|
47
25
|
end
|
48
26
|
|
data/spec/spec_helper.rb
CHANGED
@@ -7,15 +7,19 @@ require 'sqlite3'
|
|
7
7
|
|
8
8
|
require 'has_unique_slug' # and any other gems you need
|
9
9
|
|
10
|
+
RSpec.configure do |config|
|
11
|
+
|
12
|
+
end
|
13
|
+
|
10
14
|
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
11
15
|
|
12
16
|
def setup_db
|
13
17
|
ActiveRecord::Schema.define(:version => 1) do
|
14
|
-
create_table :
|
18
|
+
create_table :standard do |t|
|
15
19
|
t.column :title, :string
|
16
20
|
t.column :slug, :string
|
17
21
|
end
|
18
|
-
create_table :
|
22
|
+
create_table :custom do |t|
|
19
23
|
t.column :name, :string
|
20
24
|
t.column :permalink, :string
|
21
25
|
end
|
@@ -28,6 +32,3 @@ def teardown_db
|
|
28
32
|
end
|
29
33
|
end
|
30
34
|
|
31
|
-
RSpec.configure do |config|
|
32
|
-
|
33
|
-
end
|
metadata
CHANGED
@@ -1,74 +1,67 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: has_unique_slug
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.5
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 4
|
10
|
-
version: 0.1.4
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Brendan Stennett
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-02-28 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: rspec
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70285815385920 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
32
22
|
type: :development
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: activerecord
|
36
23
|
prerelease: false
|
37
|
-
|
24
|
+
version_requirements: *70285815385920
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: activerecord
|
27
|
+
requirement: &70285815385340 !ruby/object:Gem::Requirement
|
38
28
|
none: false
|
39
|
-
requirements:
|
40
|
-
- -
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
|
43
|
-
segments:
|
44
|
-
- 0
|
45
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
46
33
|
type: :development
|
47
|
-
|
48
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70285815385340
|
36
|
+
- !ruby/object:Gem::Dependency
|
49
37
|
name: sqlite3
|
38
|
+
requirement: &70285815384660 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
50
45
|
prerelease: false
|
51
|
-
|
46
|
+
version_requirements: *70285815384660
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rake
|
49
|
+
requirement: &70285815383900 !ruby/object:Gem::Requirement
|
52
50
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
segments:
|
58
|
-
- 0
|
59
|
-
version: "0"
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
60
55
|
type: :development
|
61
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70285815383900
|
62
58
|
description: Generates a unique slug for use as a drop-in replacement for ids.
|
63
|
-
email:
|
59
|
+
email:
|
64
60
|
- brendan@unknowncollective.com
|
65
61
|
executables: []
|
66
|
-
|
67
62
|
extensions: []
|
68
|
-
|
69
63
|
extra_rdoc_files: []
|
70
|
-
|
71
|
-
files:
|
64
|
+
files:
|
72
65
|
- .gitignore
|
73
66
|
- Gemfile
|
74
67
|
- README.md
|
@@ -80,37 +73,34 @@ files:
|
|
80
73
|
- spec/spec_helper.rb
|
81
74
|
homepage: https://github.com/HuffMoody/has_unique_slug
|
82
75
|
licenses: []
|
83
|
-
|
84
76
|
post_install_message:
|
85
77
|
rdoc_options: []
|
86
|
-
|
87
|
-
require_paths:
|
78
|
+
require_paths:
|
88
79
|
- lib
|
89
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
80
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
90
81
|
none: false
|
91
|
-
requirements:
|
92
|
-
- -
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
|
95
|
-
segments:
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
segments:
|
96
87
|
- 0
|
97
|
-
|
98
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
+
hash: -4232824133400025288
|
89
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
90
|
none: false
|
100
|
-
requirements:
|
101
|
-
- -
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
|
104
|
-
segments:
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
segments:
|
105
96
|
- 0
|
106
|
-
|
97
|
+
hash: -4232824133400025288
|
107
98
|
requirements: []
|
108
|
-
|
109
99
|
rubyforge_project: has_unique_slug
|
110
100
|
rubygems_version: 1.8.10
|
111
101
|
signing_key:
|
112
102
|
specification_version: 3
|
113
103
|
summary: Generates a unique slug for use as a drop-in replacement for ids.
|
114
|
-
test_files:
|
104
|
+
test_files:
|
115
105
|
- spec/has_unique_slug_spec.rb
|
116
106
|
- spec/spec_helper.rb
|