sql >> Database >  >> NoSQL >> Redis

Een dynamisch veld instellen in Ohm / Redis

Het attribute class-methode van Ohm::Model definieert accessor- en mutatormethoden voor het genoemde attribuut:

def self.attribute(name)
  define_method(name) do
    read_local(name)
  end

  define_method(:"#{name}=") do |value|
    write_local(name, value)
  end

  attributes << name unless attributes.include?(name)
end

Dus als je zegt attribute :foo , krijg je deze methoden gratis:

def foo         # Returns the value of foo.
def foo=(value) # Assigns a value to foo.

Je zou kunnen gebruiken send om de mutatormethode als volgt aan te roepen:

@ohm_obj.send((att + '=').to_sym, val)

Als je echt wilt zeggen @ohm_obj[att] = val dan zou je zoiets als het volgende kunnen toevoegen aan je OhmObj klas:

def []=(att, value)
    send((att + '=').to_sym, val)
end

En je zou waarschijnlijk ook willen dat de accessor-versie de symmetrie behoudt:

def [](att)
    send(att.to_sym)
end


  1. Kan mongo arraygegevens opwaarderen?

  2. Exporteer geldige json uit mongodb-verzameling

  3. Redis Async API's

  4. Indexeren met Redis gesorteerde sets