Ohm&Redisを使用する場合のコレクションとセットまたはリストの違いは何ですか?
Ohmの例のいくつかは、コレクションではなくリストを使用しています(リストドキュメント自体を参照)。
class Post < Ohm::Model
list :comments, Comment
end
class Comment < Ohm::Model
end
この設計を選択する理由は何ですか?
Ohm&Redisを使用する場合のコレクションとセットまたはリストの違いは何ですか?
Ohmの例のいくつかは、コレクションではなくリストを使用しています(リストドキュメント自体を参照)。
class Post < Ohm::Model
list :comments, Comment
end
class Comment < Ohm::Model
end
この設計を選択する理由は何ですか?
Ariejanの答えを拡張するためだけに。
リスト-注文済み。Rubyの配列に似ています。キューに使用され、アイテムの順序を維持します。
セット-順序付けされていないリスト。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が提供されました。
リスト-要素の順序付きリスト。リスト全体をリクエストすると、リストに配置した方法でアイテムが並べ替えられます。
コレクション-要素の順序付けられていないコレクション。コレクションをリクエストすると、アイテムがランダムな順序で表示される場合があります(順序なしなど)。**
あなたの例では、コメントが並べられています。
**ランダムは順序付けされていないものと同じではないことは知っていますが、それは要点を示しています。