def property(name, type, options = {})
property = DataMapper::Property.new(self, name, type, options)
properties(repository_name) << property
if repository_name == default_repository_name
@properties.except(repository_name).each do |repository_name, properties|
next if properties.named?(name)
DataMapper.repository(repository_name) do
properties << DataMapper::Property.new(self, name, type, options)
end
end
end
if property.lazy?
context = options.fetch(:lazy, :default)
context = :default if context == true
properties = properties(repository_name)
Array(context).each do |context|
properties.lazy_context(context) << self
end
end
descendants.each do |descendant|
descendant.properties(repository_name)[name] ||= property
end
create_reader_for(property)
create_writer_for(property)
property
end