platanus 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/platanus/stacked2.rb +26 -26
- data/lib/platanus/version.rb +1 -1
- metadata +2 -2
data/lib/platanus/stacked2.rb
CHANGED
@@ -157,38 +157,38 @@ module Platanus
|
|
157
157
|
if _options.delete(:mirroring)
|
158
158
|
stacked_model.accessible_attributes.each do |attr_name|
|
159
159
|
|
160
|
-
|
161
|
-
|
162
|
-
mirror = instance_variable_get(mirror_cache_var)
|
163
|
-
mirror = instance_variable_set(mirror_cache_var, {}) if mirror.nil?
|
164
|
-
mirror[attr_name] = value
|
165
|
-
end
|
166
|
-
else
|
167
|
-
Rails.logger.warn "stacked: failed to mirror setter for #{attr_name} in #{self.to_s}"
|
160
|
+
if self.method_defined? "#{attr_name}="
|
161
|
+
Rails.logger.warn "stacked: overriding setter for #{attr_name} in #{self.to_s}"
|
168
162
|
end
|
169
163
|
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
return mirror[attr_name] if !mirror.nil? and mirror.has_key? attr_name
|
164
|
+
if self.method_defined? attr_name
|
165
|
+
Rails.logger.warn "stacked: overriding getter for #{attr_name} in #{self.to_s}"
|
166
|
+
end
|
174
167
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
168
|
+
send :define_method, "#{attr_name}=" do |value|
|
169
|
+
mirror = instance_variable_get(mirror_cache_var)
|
170
|
+
mirror = instance_variable_set(mirror_cache_var, {}) if mirror.nil?
|
171
|
+
mirror[attr_name] = value
|
172
|
+
end
|
180
173
|
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
return self.send(prefix + attr_name + '_changed?') if self.respond_to? prefix + attr_name + '_changed?' # return cached value if avaliable
|
185
|
-
return true # for now just return true for non cached attributes
|
186
|
-
end
|
174
|
+
send :define_method, attr_name do
|
175
|
+
mirror = instance_variable_get(mirror_cache_var)
|
176
|
+
return mirror[attr_name] if !mirror.nil? and mirror.has_key? attr_name
|
187
177
|
|
188
|
-
|
189
|
-
|
190
|
-
|
178
|
+
return self.send(prefix + attr_name) if self.respond_to? prefix + attr_name # return cached value if avaliable
|
179
|
+
top = self.send top_value_prop
|
180
|
+
return nil if top.nil?
|
181
|
+
return top.send attr_name
|
191
182
|
end
|
183
|
+
|
184
|
+
send :define_method, "#{attr_name}_changed?" do
|
185
|
+
mirror = instance_variable_get(mirror_cache_var)
|
186
|
+
return true if !mirror.nil? and mirror.has_key? attr_name
|
187
|
+
return self.send(prefix + attr_name + '_changed?') if self.respond_to? prefix + attr_name + '_changed?' # return cached value if avaliable
|
188
|
+
return true # for now just return true for non cached attributes
|
189
|
+
end
|
190
|
+
|
191
|
+
attr_accessible attr_name
|
192
192
|
end
|
193
193
|
|
194
194
|
# before saving model, load changes from virtual attributes.
|
data/lib/platanus/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: platanus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-04-
|
12
|
+
date: 2013-04-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multi_json
|