Sha256: 193f93c3f3f6e437a8cd87024256c0fc274d24fd4218e8860e5e28f5a92add40
Contents?: true
Size: 1.26 KB
Versions: 3
Compression:
Stored size: 1.26 KB
Contents
module Fauna class Model < Resource def self.inherited(base) base.send :extend, ActiveModel::Naming base.send :include, ActiveModel::Validations base.send :include, ActiveModel::Conversion # Callbacks support base.send :extend, ActiveModel::Callbacks base.send :include, ActiveModel::Validations::Callbacks base.send :define_model_callbacks, :save, :create, :update, :destroy # Serialization base.send :include, ActiveModel::Serialization end # TODO: use proper class here def self.find_by_id(id) ref = if self <= Fauna::User "users/#{id}" elsif self <= Fauna::User::Settings "users/#{id}/settings" else "instances/#{id}" end Fauna::Resource.find(ref) end def id ref.split("/").last end def save if valid? run_callbacks(:save) do if new_record? run_callbacks(:create) { super } else run_callbacks(:update) { super } end end else false end end def delete run_callbacks(:destroy) { super } end def valid? run_callbacks(:validate) { super } end def to_model self end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
fauna-0.1.2 | lib/fauna/model.rb |
fauna-0.1.1 | lib/fauna/model.rb |
fauna-0.1 | lib/fauna/model.rb |