lib/mongoid/geo/fields.rb in mongoid_geo-0.1.7 vs lib/mongoid/geo/fields.rb in mongoid_geo-0.1.8
- old
+ new
@@ -3,15 +3,26 @@
module Fields
module ClassMethods #:nodoc
def create_accessors(name, meth, options = {})
generated_field_methods.module_eval do
define_method(meth) { read_attribute(name) }
- define_method(meth) { read_attribute(name) }
+
if options[:type] == Array && options[:geo]
- define_method(options[:lat] || "lat") { read_attribute(name)[0] }
- define_method(options[:lng] || "lng") { read_attribute(name)[1] }
+ lat_meth = options[:lat] || "lat"
+ lng_meth = options[:lng] || "lng"
+
+ define_method(lat_meth) { read_attribute(name)[0] }
+ define_method(lng_meth) { read_attribute(name)[1] }
+
+ define_method "#{lat_meth}=" do |value|
+ send(name)[0] = value
+ end
+ define_method "#{lng_meth}=" do |value|
+ send(name)[1] = value
+ end
end
+
define_method("#{meth}=") do |value|
if options[:type] == Array && options[:geo]
value = case value
when String
value.split(",").map(&:to_f)
@@ -22,9 +33,10 @@
end
value = value[0..1] if !value.nil?
end
write_attribute(name, value)
end
+
define_method("#{meth}?") do
attr = read_attribute(name)
(options[:type] == Boolean) ? attr == true : attr.present?
end
end
\ No newline at end of file