[REDIS] 옴 / 레디 스에서 동적 필드를 설정
REDIS옴 / 레디 스에서 동적 필드를 설정
어떻게이 옴 개체에 대해 동적으로 필드를 설정합니까?
class OhmObj < Ohm::Model
attribute :foo
attribute :bar
attribute :baz
def add att, val
self[att] = val
end
end
class OtherObj
def initialize
@ohm_obj = OhmObj.create
end
def set att, val
@ohm_obj[att] = val #doesn't work
@ohm_obj.add(att, val) #doesn't work
end
end
해결법
-
==============================
1.명명 된 속성에 대한 접근 옴 :: 모델을 정의 및 뮤 테이터 방법에서 속성 클래스 방법 :
명명 된 속성에 대한 접근 옴 :: 모델을 정의 및 뮤 테이터 방법에서 속성 클래스 방법 :
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
당신이 속성 말할 때 이렇게 : foo는, 당신은 무료로 이러한 방법을 얻을 :
def foo # Returns the value of foo. def foo=(value) # Assigns a value to foo.
이 같은 mutator 메소드를 호출 전송을 사용할 수 있습니다 :
@ohm_obj.send((att + '=').to_sym, val)
당신이 정말로 @ohm_obj 말하고 싶은 경우 [AT & T는] 발은 당신이 당신의 OhmObj 클래스에 다음과 같이 뭔가를 추가 할 수 =
def []=(att, value) send((att + '=').to_sym, val) end
그리고 당신은 아마 잘 대칭을 유지하기로 접근 버전을 원하는 것 :
def [](att) send(att.to_sym) end
-
==============================
2.[] []를 동적 속성 = 접근로 및 테이터는 0.2 옴의 옴 : 기본 모델에 의해 정의된다.
[] []를 동적 속성 = 접근로 및 테이터는 0.2 옴의 옴 : 기본 모델에 의해 정의된다.
from https://stackoverflow.com/questions/6638375/setting-a-dynamic-field-in-ohm-redis by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 나는 루비 다이제스트 :: SHA1 인스턴스 객체를 직렬화 할 수 있나요? (0) | 2020.01.25 |
---|---|
[REDIS] 얼랑 및 레디 스 : 읽기 성능 (0) | 2020.01.25 |
[REDIS] 사용 레디 스는 제한된 범위에서 고유 ID를 생성하는 (0) | 2020.01.25 |
[REDIS] 레디 스 구독의 출력을 리디렉션하는 방법 (0) | 2020.01.25 |
[REDIS] 어떻게 laravel 다른 레디 스 연결을 사용할 수 있습니다 (0) | 2020.01.25 |