lib/id/model/has_one.rb in id-0.0.6 vs lib/id/model/has_one.rb in id-0.0.7
- old
+ new
@@ -1,13 +1,28 @@
module Id
module Model
class HasOne < Association
- def define
+ def define_getter
field = self
model.send :define_method, name do
memoize field.name do
- field.type.new(data.fetch(field.key) { raise MissingAttributeError })
+ child = data.fetch(field.key) { raise MissingAttributeError, field.key }
+ field.type.new(child) unless child.nil?
+ end
+ end
+ end
+
+ end
+
+ class HasOneOption < Association
+
+ def define_getter
+ field = self
+ model.send :define_method, name do
+ memoize field.name do
+ child = data.fetch(field.key, nil)
+ child.nil? ? None : Some[field.type.new(child)]
end
end
end
end