def via
return @via if defined?(@via)
@via = options[:via]
if @via.kind_of?(Associations::Relationship)
return @via
end
name = self.name
through = self.through
repository_name = through.relative_target_repository_name
through_model = through.target_model
relationships = through_model.relationships(repository_name)
singular_name = DataMapper::Inflector.singularize(name.to_s).to_sym
@via = relationships[@via] ||
relationships[name] ||
relationships[singular_name]
@via ||= if anonymous_through_model?
DataMapper.repository(repository_name) do
through_model.belongs_to(singular_name, target_model, many_to_one_options)
end
else
raise UnknownRelationshipError, "No relationships named #{name} or #{singular_name} in #{through_model}"
end
@via.child_key
@via
end