Просто расширим ответ Ариян.
Список - заказан.Похоже на массив в Ruby.Используется для очередей и поддержания порядка элементов.
Set - неупорядоченный список.Он ведет себя подобно массиву в Ruby, но оптимизирован для более быстрого поиска.
Коллекция - используется вместе с ссылка , он обеспечиваетпростой способ представления ассоциаций.
По сути, коллекции и ссылки являются удобными методами работы с ассоциациями.Итак, это:
class Post < Ohm::Model
attribute :title
attribute :body
collection :comments, Comment
end
class Comment < Ohm::Model
attribute :body
reference :post, Post
end
является сокращением для следующего:
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
Чтобы ответить на ваш оригинальный вопрос об обосновании выбора дизайна - коллекции и ссылки были введены, чтобы обеспечить простоеAPI для представления ассоциаций.