Module: SerializableData::ClassMethods

Defined in:
lib/serializable_data.rb

Instance Method Summary collapse

Instance Method Details

#serialized_data(data_column, attributes) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/serializable_data.rb', line 78

def serialized_data(data_column, attributes)
  serialize data_column
  self._data_column = data_column
  self._data_attributes = []
  attributes.each do |name, type|
    self._data_attributes << name
    # setter
    define_method("#{name}=") do |value|
      current_value = self.send(data_column)
      value = self.class.to_bool(value) if type == :boolean
      new_value = current_value.merge(name => value)
      self.send("#{data_column}=", new_value)
    end
    # getters
    if type == :array
      define_method(name) {
        data = self.send(data_column)
        data && data[name] || []
      }
    else
      define_method(name) {
        data = self.send(data_column)
        data ? data[name] : nil
      }
    end
    alias_method("#{name}?", name) if type == :boolean
  end
end

#to_bool(value) ⇒ Object



107
108
109
110
# File 'lib/serializable_data.rb', line 107

def to_bool value
  return false if [0, "0", "false", false, nil].include?(value)
  true if [1, "1", "true", true].include?(value)
end