Redis
 sql >> база данни >  >> NoSQL >> Redis

Задаване на динамично поле в Ohm / Redis

attribute метод на клас от Ohm::Model дефинира методите за достъп и мутатор за посочения атрибут:

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

Така че, когато кажете attribute :foo , получавате тези методи безплатно:

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

Можете да използвате send за да извикате метода на мутатора по следния начин:

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

Ако наистина искате да кажете @ohm_obj[att] = val тогава можете да добавите нещо като следното към вашия OhmObj клас:

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

Вероятно бихте искали и версията на аксесоара да поддържа симетрия:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Конвенция за именуване и валидни символи за ключ Redis

  2. Има ли препоръчителна стойност на COUNT за команда SCAN / HSCAN в REDIS?

  3. Predis дава „Грешка при четене на ред от сървъра“

  4. Как да конвертирате Redis дата в R

  5. Получавате грешка при връзката, когато използвате redis-trib.rb за създаване на клъстер?