mongoid_slug 0.6.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/mongoid/slug/version.rb +1 -1
- data/lib/mongoid/slug.rb +15 -2
- data/spec/models/article.rb +7 -0
- data/spec/mongoid/slug_spec.rb +20 -0
- metadata +5 -3
data/lib/mongoid/slug/version.rb
CHANGED
data/lib/mongoid/slug.rb
CHANGED
@@ -26,6 +26,13 @@ module Mongoid #:nodoc:
|
|
26
26
|
|
27
27
|
self.slug_name = options[:as] || :slug
|
28
28
|
self.slug_scope = options[:scope] || nil
|
29
|
+
|
30
|
+
class_eval <<-CODE
|
31
|
+
def slug_any?
|
32
|
+
#{!!options[:any]}
|
33
|
+
end
|
34
|
+
CODE
|
35
|
+
|
29
36
|
self.slugged_fields = fields
|
30
37
|
|
31
38
|
if options[:scoped]
|
@@ -101,9 +108,15 @@ module Mongoid #:nodoc:
|
|
101
108
|
end
|
102
109
|
|
103
110
|
def slug_base
|
104
|
-
self.class.slugged_fields.map do |field|
|
111
|
+
values = self.class.slugged_fields.map do |field|
|
105
112
|
self.send(field)
|
106
|
-
end
|
113
|
+
end
|
114
|
+
|
115
|
+
if slug_any?
|
116
|
+
values.detect { |value| value.present? }
|
117
|
+
else
|
118
|
+
values.join(' ')
|
119
|
+
end
|
107
120
|
end
|
108
121
|
|
109
122
|
def slugged_fields_changed?
|
data/spec/mongoid/slug_spec.rb
CHANGED
@@ -157,6 +157,26 @@ module Mongoid
|
|
157
157
|
it "finds by slug" do
|
158
158
|
Author.find_by_slug("gilles-deleuze").should eql author
|
159
159
|
end
|
160
|
+
|
161
|
+
end
|
162
|
+
|
163
|
+
context "when :any is passed as an argument" do
|
164
|
+
let!(:article) do
|
165
|
+
Article.create(
|
166
|
+
:brief => "This is the brief",
|
167
|
+
:title => "This is the title")
|
168
|
+
end
|
169
|
+
|
170
|
+
it "uses the first available field for the slug if any option is used" do
|
171
|
+
article.to_param.should eql 'this-is-the-title'
|
172
|
+
article.title = ""
|
173
|
+
article.save
|
174
|
+
article.to_param.should eql 'this-is-the-brief'
|
175
|
+
|
176
|
+
article.title = nil
|
177
|
+
article.save
|
178
|
+
article.to_param.should eql 'this-is-the-brief'
|
179
|
+
end
|
160
180
|
end
|
161
181
|
|
162
182
|
context "when :as is passed as an argument" do
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: mongoid_slug
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.6.
|
5
|
+
version: 0.6.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Paper Cavalier
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-02-
|
13
|
+
date: 2011-02-27 00:00:00 +00:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -93,6 +93,7 @@ files:
|
|
93
93
|
- lib/mongoid/slug.rb
|
94
94
|
- LICENSE
|
95
95
|
- README.md
|
96
|
+
- spec/models/article.rb
|
96
97
|
- spec/models/author.rb
|
97
98
|
- spec/models/book.rb
|
98
99
|
- spec/models/comic_book.rb
|
@@ -126,11 +127,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
127
|
requirements: []
|
127
128
|
|
128
129
|
rubyforge_project: mongoid_slug
|
129
|
-
rubygems_version: 1.5.
|
130
|
+
rubygems_version: 1.5.2
|
130
131
|
signing_key:
|
131
132
|
specification_version: 3
|
132
133
|
summary: Generates a URL slug
|
133
134
|
test_files:
|
135
|
+
- spec/models/article.rb
|
134
136
|
- spec/models/author.rb
|
135
137
|
- spec/models/book.rb
|
136
138
|
- spec/models/comic_book.rb
|