Solo para ampliar la respuesta de Ariejan.
Lista ordenados. Similar a una matriz en Ruby. Se utiliza para hacer colas y mantener los artículos ordenados.
Conjunto - una lista desordenada. Es se comporta similar a una matriz en Ruby, pero está optimizado para búsquedas más rápidas.
Colección - utilizado junto con referencia, proporciona una manera simple de representar asociaciones.
En esencia, las colecciones y las referencias son métodos de conveniencia para tratar con asociaciones. Así que esto:
class Post < Ohm::Model
attribute :title
attribute :body
collection :comments, Comment
end
class Comment < Ohm::Model
attribute :body
reference :post, Post
end
es un atajo para la siguiente:
class Post < Ohm::Model
attribute :title
attribute :body
def comments
Comment.find(:post_id => self.id)
end
end
class Comment < Ohm::Model
attribute :body
attribute :post_id
index :post_id
def post=(post)
self.post_id = post.id
end
def post
Post[post_id]
end
end
Para responder a la pregunta inicial acerca de la justificación de la elección del diseño - se introdujeron colecciones y referencias para proporcionar una API simple para la representación de las asociaciones .
¿Qué hay de Set? –