Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Đặt trường động trong Ohm / Redis

Thuộc tính attribute phương thức lớp từ Ohm::Model xác định các phương thức trình truy cập và trình biến đổi cho thuộc tính được đặt tên:

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

Vì vậy, khi bạn nói attribute :foo , bạn nhận được các phương pháp này miễn phí:

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

Bạn có thể sử dụng send để gọi phương thức mutator như sau:

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

Nếu bạn thực sự muốn nói @ohm_obj[att] = val thì bạn có thể thêm một cái gì đó như sau vào OhmObj của mình lớp:

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

Và bạn có thể muốn phiên bản trình truy cập cũng duy trì tính đối xứng:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Giữ cho dữ liệu Redis tồn tại giữa docker-compile down và up trong Docker container

  2. Tắt redis khi nhiều lần hết thời gian sử dụng khởi động lò xo

  3. Công cụ cơ sở dữ liệu hướng tài liệu hiệu quả nhất để lưu trữ hàng nghìn tài liệu cỡ vừa là gì?

  4. Tôi có nên chia sẻ kết nối Redis giữa các tệp / mô-đun không?

  5. Sử dụng đơn giản EM ::Synchrony # sync gây ra 'sợi gốc' FiberError - lỗi của tôi?