sql >> Databasteknik >  >> NoSQL >> Redis

Ställa in ett dynamiskt fält i Ohm / Redis

attribute klassmetod från Ohm::Model definierar accessor- och mutatormetoder för det namngivna attributet:

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 säger attribute :foo , får du dessa metoder gratis:

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

Du kan använda send för att anropa mutatormetoden så här:

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

Om du verkligen vill säga @ohm_obj[att] = val sedan kan du lägga till något i stil med följande till din OhmObj klass:

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

Och du skulle förmodligen vilja att accessorversionen också bibehåller symmetri:

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


  1. Varför använder mongoose schema när fördelen med mongodb är att den är schemalös?

  2. Hur kan jag implementera behörigheter på fältnivå för MongoDB?

  3. php-redis - Finns det något sätt att lagra PHP-objekt i Redis utan att serialisera det?

  4. MongoDB \uXXXX problem