Sha256: f5db3a7fed4897c22b1bafbd1dd4ae013e2b171016bce772b550605e66abbfa0
Contents?: true
Size: 1.73 KB
Versions: 1
Compression:
Stored size: 1.73 KB
Contents
require File.dirname(__FILE__) + '/simple_property' require File.dirname(__FILE__) + '/belongs_to_property' module CouchPotato module Persistence module Properties def self.included(base) base.extend ClassMethods base.class_eval do def self.properties @properties ||= {} @properties[self.name] ||= [] end end end module ClassMethods # returns all the property names of a model class that have been defined using the #property method # # example: # class Book # property :title # property :year # end # Book.property_names # => [:title, :year] def property_names properties.map(&:name) end def json_create(json) #:nodoc: instance = super instance.attributes.each do |name, value| instance.instance_variable_set("@#{name}_was", value) end instance end # Declare a proprty on a model class. properties are not typed by default. You can use any of the basic types by JSON (String, Integer, Fixnum, Array, Hash). If you want a property to be of a custom class you have to define it using the :class option. # # example: # class Book # property :title # property :year # property :publisher, :class => Publisher # end def property(name, options = {}) clazz = options.delete(:class) properties << (clazz || SimpleProperty).new(self, name, options) end def belongs_to(name) #:nodoc: property name, :class => BelongsToProperty end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
langalex-couch_potato-0.2.3 | lib/couch_potato/persistence/properties.rb |