sql >> Databáze >  >> NoSQL >> Redis

Nastavení dynamického pole v Ohm / Redis

attribute metoda třídy z Ohm::Model definuje metody přístupového objektu a mutátoru pro pojmenovaný atribut:

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

Když tedy řeknete attribute :foo , získáte tyto metody zdarma:

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

Můžete použít send pro volání metody mutator takto:

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

Pokud opravdu chcete říct @ohm_obj[att] = val pak můžete do OhmObj přidat něco jako následující třída:

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

A pravděpodobně byste také chtěli, aby verze s přístupovým prvkem zachovala symetrii:

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


  1. agregační řazení mongodb

  2. Aktualizace vlastnosti vloženého dokumentu v Mongodb

  3. Existuje způsob, jak zapsat datový rámec pyspark do azure cache pro redis?

  4. Redis Connection přes socket na Node.js