hstore_attributes 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/hstore_attributes.rb +10 -2
- data/lib/hstore_attributes/version.rb +1 -1
- data/test/hstore_accessor_test.rb +18 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96d23483429660646d51455c55999ffb42bc10ff
|
4
|
+
data.tar.gz: 2dd231a0ce61ffd5252dc5063b0d13509884a712
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48cb4ca45649a695454e1cf77d4502d1ad5c5c2a32b344c694e01ea716da7051428e313f47ea1596411a483c29e82c680a232ff1dde83032cdc89c6972156cc3
|
7
|
+
data.tar.gz: 0bead8530fd7f87055ed0e7a2b9f9c7241a3d089bac8e9ddf7c35aadd4748ff778b29a11a3be346c6f8b57582709fbe54f5495a54d13fc47eb17dffaa54cff4b
|
data/lib/hstore_attributes.rb
CHANGED
@@ -11,10 +11,17 @@ module HstoreAttributes
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
+
def self.attribute_name(name, options)
|
15
|
+
prefix = options[:prefix]
|
16
|
+
suffix = options[:suffix]
|
17
|
+
[prefix, name, suffix].compact.join("_")
|
18
|
+
end
|
19
|
+
|
14
20
|
def hstore_reader(hstore, *attributes)
|
15
21
|
options = attributes.extract_options!
|
16
22
|
attributes.map(&:to_s).each do |attribute|
|
17
|
-
|
23
|
+
attribute_name = HstoreAttributes.attribute_name(attribute, options)
|
24
|
+
define_method(attribute_name) do
|
18
25
|
value = (send(hstore) || {})[attribute]
|
19
26
|
HstoreAttributes.convert(value, options)
|
20
27
|
end
|
@@ -24,7 +31,8 @@ module HstoreAttributes
|
|
24
31
|
def hstore_writer(hstore, *attributes)
|
25
32
|
options = attributes.extract_options!
|
26
33
|
attributes.map(&:to_s).each do |attribute|
|
27
|
-
|
34
|
+
attribute_name = HstoreAttributes.attribute_name(attribute, options)
|
35
|
+
define_method("#{attribute_name}=") do |value|
|
28
36
|
value = HstoreAttributes.convert(value, options)
|
29
37
|
send("#{hstore}=", (send(hstore) || {}).merge(attribute => value))
|
30
38
|
end
|
@@ -5,6 +5,9 @@ class Product
|
|
5
5
|
extend HstoreAttributes
|
6
6
|
|
7
7
|
hstore_accessor :data, :name, :description, type_cast: ->(value) { value.to_s.upcase }
|
8
|
+
hstore_accessor :data, :name, prefix: :prefixed
|
9
|
+
hstore_accessor :data, :name, suffix: :suffixed
|
10
|
+
hstore_accessor :data, :name, prefix: :pre, suffix: :suf
|
8
11
|
end
|
9
12
|
|
10
13
|
describe "hstore_writer" do
|
@@ -21,4 +24,19 @@ describe "hstore_writer" do
|
|
21
24
|
@product.description = "trolololo"
|
22
25
|
assert_equal "TROLOLOLO", @product.description
|
23
26
|
end
|
27
|
+
|
28
|
+
it "allows to prefix accessor methods" do
|
29
|
+
@product.prefixed_name = "zomg"
|
30
|
+
assert_equal "zomg", @product.prefixed_name
|
31
|
+
end
|
32
|
+
|
33
|
+
it "allows to suffix accessor methods" do
|
34
|
+
@product.name_suffixed = "zomg"
|
35
|
+
assert_equal "zomg", @product.name_suffixed
|
36
|
+
end
|
37
|
+
|
38
|
+
it "allows to prefix and suffix accessor methods at once" do
|
39
|
+
@product.pre_name_suf = "zomg"
|
40
|
+
assert_equal "zomg", @product.pre_name_suf
|
41
|
+
end
|
24
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hstore_attributes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kuba Kuźma
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -92,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
92
|
version: '0'
|
93
93
|
requirements: []
|
94
94
|
rubyforge_project:
|
95
|
-
rubygems_version: 2.0.
|
95
|
+
rubygems_version: 2.0.3
|
96
96
|
signing_key:
|
97
97
|
specification_version: 4
|
98
98
|
summary: Easy accessors for Hstore data.
|