act_with_bag 0.4.2 → 0.4.4
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 +4 -4
- data/.gitignore +1 -0
- data/lib/act_with_bag.rb +44 -45
- data/lib/act_with_bag/version.rb +1 -1
- data/test/accessor_test.rb +22 -0
- data/test/test_helper.rb +2 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 377b880a5e83253a06619f5037a66f42b5225cf0
|
4
|
+
data.tar.gz: 4de0ea43eb837f92050ded8a36f8ffca378cdace
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 572094a068fbaee745b42bf6da2c19613deeac107424642fbba60d5e3788ec72113655193ba1e1549c5b728b8c037d453c4f6609e7722945bd772aee6cf41447
|
7
|
+
data.tar.gz: 702ece6fbd63eb424237b2704dc18c211ff2a389dfaf7c4952d32196b50df71e582136c79764968854ec1e0216d7f30800ae80ecfe0a61fd1e5d73af8c889825
|
data/.gitignore
CHANGED
data/lib/act_with_bag.rb
CHANGED
@@ -69,62 +69,61 @@ class << ActiveRecord::Base
|
|
69
69
|
|
70
70
|
|
71
71
|
protected
|
72
|
-
def
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
72
|
+
def accessor_present?(accessor)
|
73
|
+
accessor_sym = accessor.to_sym
|
74
|
+
res = false
|
75
|
+
|
76
|
+
res = true if self.method_defined?(accessor_sym)
|
77
|
+
res = true if self.respond_to?(:attribute_names) &&
|
78
|
+
self.attribute_names.include?(accessor)
|
79
|
+
if res
|
80
|
+
# logger.info "** Already defined #{self.to_s}.#{accessor}"
|
81
|
+
#p "** act_to_bag: untouched accessor '#{self.to_s}.#{accessor}'"
|
82
|
+
end
|
83
|
+
return res
|
78
84
|
end
|
79
85
|
|
80
86
|
def add_accessor(baggie, type)
|
81
|
-
|
87
|
+
accessor = baggie.to_s
|
82
88
|
type_sym = type.to_sym
|
83
89
|
#p "add_accessor #{self.to_s} #{baggie.inspect} #{type_sym.inspect}"
|
84
90
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
end
|
95
|
-
res
|
91
|
+
return if accessor_present?(accessor)
|
92
|
+
|
93
|
+
self.class_eval %{
|
94
|
+
def #{accessor}
|
95
|
+
res = bag && bag[:#{baggie}]
|
96
|
+
if :#{type} == :boolean
|
97
|
+
return res if res.class == FalseClass
|
98
|
+
return res if res.class == TrueClass
|
99
|
+
return res.to_i != 0
|
96
100
|
end
|
97
|
-
|
98
|
-
|
101
|
+
res
|
102
|
+
end
|
103
|
+
}
|
99
104
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
self.bag.delete(:#{baggie})
|
110
|
-
nil
|
111
|
-
end
|
105
|
+
@baggies_date[baggie] = type if type == :date
|
106
|
+
self.class_eval %{
|
107
|
+
def #{accessor}=(value)
|
108
|
+
@attributes['bag'] = {} unless bag.is_a?(Hash)
|
109
|
+
unless value.nil?
|
110
|
+
self.bag[:#{baggie}] = value
|
111
|
+
else
|
112
|
+
self.bag.delete(:#{baggie})
|
113
|
+
nil
|
112
114
|
end
|
113
|
-
|
114
|
-
|
115
|
+
end
|
116
|
+
}
|
115
117
|
|
116
118
|
return unless type_sym == :boolean
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
end
|
126
|
-
}
|
127
|
-
end
|
119
|
+
self.class_eval %{
|
120
|
+
def #{accessor}?
|
121
|
+
res = bag && bag[:#{baggie}]
|
122
|
+
return res if res.class == FalseClass
|
123
|
+
return res if res.class == TrueClass
|
124
|
+
res.to_i != 0
|
125
|
+
end
|
126
|
+
}
|
128
127
|
end
|
129
128
|
|
130
129
|
end
|
data/lib/act_with_bag/version.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
|
4
|
+
class Order < ActiveRecord::Base
|
5
|
+
add_to_bag :category
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
class AccessorTest < ActiveSupport::TestCase
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@order = Order.new
|
13
|
+
end
|
14
|
+
|
15
|
+
test "should reject overwriting of column category" do
|
16
|
+
value = 'abc'
|
17
|
+
assert @order.respond_to?(:category)
|
18
|
+
@order.category = value
|
19
|
+
assert_equal false, @order.bag.has_key?(:category)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -4,11 +4,12 @@ require 'active_record'
|
|
4
4
|
|
5
5
|
ActiveRecord::Base.establish_connection({
|
6
6
|
:adapter => 'sqlite3',
|
7
|
-
:database => '
|
7
|
+
:database => 'bag_test'
|
8
8
|
})
|
9
9
|
|
10
10
|
ActiveRecord::Schema.define do
|
11
11
|
create_table 'orders', :force => true do |t|
|
12
|
+
t.string :category
|
12
13
|
t.column 'bag', :text
|
13
14
|
end
|
14
15
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: act_with_bag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- matique
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sqlite3
|
@@ -38,6 +38,7 @@ files:
|
|
38
38
|
- act_with_bag.gemspec
|
39
39
|
- lib/act_with_bag.rb
|
40
40
|
- lib/act_with_bag/version.rb
|
41
|
+
- test/accessor_test.rb
|
41
42
|
- test/bag_test.rb
|
42
43
|
- test/boolean_test.rb
|
43
44
|
- test/clean_test.rb
|
@@ -63,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
64
|
version: '0'
|
64
65
|
requirements: []
|
65
66
|
rubyforge_project: act_with_bag
|
66
|
-
rubygems_version: 2.
|
67
|
+
rubygems_version: 2.1.9
|
67
68
|
signing_key:
|
68
69
|
specification_version: 4
|
69
70
|
summary: act_with_bag (baggies) gem
|