Module: ActiveType::VirtualAttributes::ClassMethods

Defined in:
lib/active_type/virtual_attributes.rb

Instance Method Summary collapse

Instance Method Details

#_has_virtual_column?(name) ⇒ Boolean

Returns:

  • (Boolean)


161
162
163
164
165
166
167
168
169
# File 'lib/active_type/virtual_attributes.rb', line 161

def _has_virtual_column?(name)
  virtual_columns_hash.has_key?(name.to_s) || begin
    if defined?(super)
      super
    else
      false
    end
  end
end

#_virtual_column(name) ⇒ Object



141
142
143
144
145
146
147
148
149
# File 'lib/active_type/virtual_attributes.rb', line 141

def _virtual_column(name)
  virtual_columns_hash[name.to_s] || begin
    if defined?(super)
      super
    else
      raise MissingAttributeError.new("Undefined attribute '#{name}'")
    end
  end
end

#_virtual_column_namesObject



151
152
153
154
155
156
157
158
159
# File 'lib/active_type/virtual_attributes.rb', line 151

def _virtual_column_names
  @virtual_column_names ||= begin
    names = virtual_columns_hash.keys
    if defined?(super)
      names += super
    end
    names
  end
end

#attribute(name, type = nil) ⇒ Object



179
180
181
182
# File 'lib/active_type/virtual_attributes.rb', line 179

def attribute(name, type = nil)
  self.virtual_columns_hash = virtual_columns_hash.merge(name.to_s => VirtualColumn.new(name, type))
  AccessorGenerator.new(generated_virtual_attribute_methods).generate_accessors(name)
end

#generated_virtual_attribute_methodsObject



171
172
173
174
175
176
177
# File 'lib/active_type/virtual_attributes.rb', line 171

def generated_virtual_attribute_methods
  @generated_virtual_attribute_methods ||= begin
    mod = Module.new
    include mod
    mod
  end
end