Domanda

Qual è la differenza tra una collezione e un set o un elenco quando si utilizza Ohm e Redis?

Molti degli esempi Ohm utilizzare una lista piuttosto che una collezione (vedi lista doc per sé ):

class Post < Ohm::Model
  list :comments, Comment
end

class Comment < Ohm::Model
end

Qual è la logica di questa scelta di design?

È stato utile?

Soluzione

Lista - ordinato di elementi. Quando si richiede l'intero elenco, si ottengono gli articoli ordinati il ??modo in cui li metti nella lista.

Collection - non ordinata raccolta di elementi. Quando si richiede la raccolta, gli elementi possono essere visualizzati in ordine casuale (ad esempio non ordinato). **

Nel tuo esempio, i commenti sono classificati in ordine.

** So che casuale non è la stessa di non ordinata, ma lo fa illustrare il punto.

Altri suggerimenti

Proprio per espandere sulla risposta Ariejan.

  • Lista - ordinato. Simile a un array in Ruby. Usato per le code e gli elementi mantenendo ordinato.

  • Set - una lista non ordinata. E ' si comporta simile a un array in Ruby, ma è ottimizzato per le ricerche più veloci.

  • Collection -. Utilizzato in combinazione con di riferimento , che fornisce un modo semplice di rappresentare Associazioni

In sostanza, le collezioni e riferimenti sono metodi di convenienza per trattare con le associazioni. Quindi questo:

class Post < Ohm::Model
  attribute :title
  attribute :body
  collection :comments, Comment
end

class Comment < Ohm::Model
  attribute :body
  reference :post, Post
end

è una scorciatoia per il seguente:

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

Per rispondere si domanda iniziale circa la logica per la scelta di progettazione -. Collezioni e riferimenti sono stati introdotti per fornire una semplice API per rappresentare le associazioni

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top