Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Ustawianie pola dynamicznego w Ohm / Redis

attribute metoda klasy z Ohm::Model definiuje metody akcesora i mutatora dla nazwanego atrybutu:

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

Więc kiedy mówisz attribute :foo , otrzymujesz te metody za darmo:

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

Możesz użyć send aby wywołać metodę mutatora w ten sposób:

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

Jeśli naprawdę chcesz powiedzieć @ohm_obj[att] = val wtedy możesz dodać coś takiego do swojego OhmObj klasa:

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

I prawdopodobnie chciałbyś, aby wersja akcesora również zachowała symetrię:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak zapisać tylko jedną bazę danych w Redisie?

  2. Node.js — Sesja nie jest zachowywana przez res.redirect()

  3. Redis — wygasłe indeksy nie są usuwane

  4. Używając Predis, jak ustawić (tj. przechowywać) wielowymiarową tablicę asocjacyjną?

  5. Jak korzystać z Redis w Pythonie