sluggable_rw 0.0.0
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.
- checksums.yaml +7 -0
- data/lib/sluggable_rw.rb +44 -0
- metadata +43 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 87d253a6b1840f02ffe5466a1c9130e8cd501cdd
|
4
|
+
data.tar.gz: 8ddd8e0bb45d0d7bf80962748dc18e1806e49297
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7f471b3b9ffa8a7130600e634e073ad09633d564e601c56c5a2b7051d51ebfa4e8ba2d552742267317c66d1a780bfad1ece73eeab0524405ca1bdb12d9191ddc
|
7
|
+
data.tar.gz: 6273e8badc69396634aa83537321691986777c804535fa4ed27c16348a060b9056f33c9e5d64fca2c6cf60a5448b52011e1ae90f1e3df057134071ca93a19cb5
|
data/lib/sluggable_rw.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
module Sluggable
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
before_save :generate_slug
|
6
|
+
# define a class attribute to access the argument passed in
|
7
|
+
class_attribute :slug_column
|
8
|
+
end
|
9
|
+
|
10
|
+
module ClassMethods
|
11
|
+
# the method could be called within the mixin class and pass in argument for module
|
12
|
+
def sluggable_column(field)
|
13
|
+
# use slug_column the class attribute to store and access the passed in argument
|
14
|
+
self.slug_column = field
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_param
|
19
|
+
self.slug
|
20
|
+
end
|
21
|
+
|
22
|
+
def slug_base
|
23
|
+
self.class.slug_column.to_sym
|
24
|
+
end
|
25
|
+
|
26
|
+
def generate_slug(number=0)
|
27
|
+
if number == 0
|
28
|
+
slug = self.send(slug_base).gsub(/['`]/, "").parameterize
|
29
|
+
else
|
30
|
+
slug = self.send(slug_base).gsub(/['`]/, "").parameterize
|
31
|
+
slug = "#{slug}-#{number}"
|
32
|
+
end
|
33
|
+
|
34
|
+
obj = self.class.find_by(slug: slug)
|
35
|
+
|
36
|
+
if obj && obj != self
|
37
|
+
number += 1
|
38
|
+
self.generate_slug(number)
|
39
|
+
else
|
40
|
+
self.slug = slug
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
metadata
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sluggable_rw
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ravi L.W. Wu
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-09-20 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Simple sluggable mechanism for quick project
|
14
|
+
email: raviwu@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/sluggable_rw.rb
|
20
|
+
homepage: http://github.com
|
21
|
+
licenses: []
|
22
|
+
metadata: {}
|
23
|
+
post_install_message:
|
24
|
+
rdoc_options: []
|
25
|
+
require_paths:
|
26
|
+
- lib
|
27
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - '>='
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: '0'
|
32
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - '>='
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '0'
|
37
|
+
requirements: []
|
38
|
+
rubyforge_project:
|
39
|
+
rubygems_version: 2.4.6
|
40
|
+
signing_key:
|
41
|
+
specification_version: 4
|
42
|
+
summary: A simple slug gem
|
43
|
+
test_files: []
|