2011-01-24 50 views

回答

5

列表 - 訂購列表的元素。當你要求整個清單時,你會按照你把它們放在清單中的方式得到清單。

收藏 - 無序集合的元素。當您請求收集時,商品可能會以隨機順序出現(例如無序)。**

在您的示例中,您已經訂購了評論。

**我知道隨機不是無序的,但它確實說明了這一點。

+0

套裝呢? – 2016-02-20 18:33:54

14

只是爲了擴大Ariejan的答案。

  • List - ordered。與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 。

相關問題