def child_key
return @child_key if defined?(@child_key)
model = source_model
repository_name = source_repository_name || target_repository_name
properties = model.properties(repository_name)
source_key = target_key.zip(@child_properties || []).map do |target_property, property_name|
property_name ||= "#{name}_#{target_property.name}".to_sym
properties[property_name] || begin
DataMapper.repository(repository_name) do
model.property(property_name, target_property.to_child_key, source_key_options(target_property))
end
end
end
@child_key = properties.class.new(source_key).freeze
end