데이터베이스에 실제 열이 하나있는 모델이 있습니다. 이 열은 구성의 JSON 문자열로 저장됩니다. 이 구성 JSON 속성 내부에 매핑하려는 가상 속성을 사용합니다. 기본적으로 DB에 묶음 열을 만들고 싶지 않지만이 JSON 특성을 사용하여 모든 것을 포함합니다. 이것보다 더 깨끗한 방법이 있습니까 def
?가상 속성을 해시에 포함시키는 것
class Device < ActiveRecord::Base
attr_accessible :configuration
serialize :configuration, JSON
attr_accessor :background_color, :title
# below is ew
def background_color; self.configuration["background_color"]; end
def background_color=(value); self.configuration["background_color"] = value; end
def title; self.configuration["title"]; end
def title=(value); self.configuration["title"] = value; end
end
이상적으로는 attr_maps_to_hash :configuration, [:background_color, :title]
과 같은 것을 찾고있을 것입니다. 이 같은 것이 존재합니까?
또 다른 해결 방법은 getters와 setters를 생성하기 위해 속성 기호 배열에'class_eval'을 사용하는 것입니다.하지만 그 역시 추악합니다. – Larry