sql >> Database teknologi >  >> NoSQL >> Redis

Indstilling af et dynamisk felt i Ohm / Redis

attribute klassemetode fra Ohm::Model definerer accessor- og mutatormetoder for den navngivne attribut:

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

Så når du siger attribute :foo , får du disse metoder gratis:

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

Du kan bruge send at kalde mutatormetoden sådan her:

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

Hvis du virkelig vil sige @ohm_obj[att] = val så kan du tilføje noget i stil med følgende til din OhmObj klasse:

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

Og du vil sikkert også have accessorversionen til at bevare symmetri:

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


  1. Redis - Udløbne indekser slettes ikke

  2. Hvad er den bedste strategi til at synkronisere Redis-data til MySQL?

  3. Hvordan udfører jeg et MongoDB js-script ved hjælp af Java MongoDriver

  4. Redis jokertegn slette script ved hjælp af EVAL, SCAN og DEL returnerer skrivekommandoer ikke tilladt efter ikke-deterministiske kommandoer