Sha256: 5cedad61a97841a3dae99a20823a9b7f643a2b1dd7097c4340025ef9478311c7
Contents?: true
Size: 1.58 KB
Versions: 2
Compression:
Stored size: 1.58 KB
Contents
module ActiveGit module ActiveRecord module ClassMethods def git_versioned(options={}) @options = options.merge root: false def git_options @options end def git_included_models git_included_associations.map { |a| reflections[a] ? reflections[a].klass : a.to_s.classify.constantize } end def git_included_associations git_deep_included_associations git_options[:include] end def git_deep_included_associations(arg) return [] if arg.nil? if arg.is_a? Array arg elsif arg.is_a? Hash arg.keys + git_deep_included_associations(arg.map{|k,v| v[:include]}) else [arg] end end include InstanceMethods ActiveGit.models << self after_save do |record| ActiveGit.synchronize FileSave.new(record) end after_destroy do |record| ActiveGit.synchronize FileDelete.new(record) end end def git_included_in(model) after_save do instance = send model #TODO: Ver si se puede optimizar el reload para que no lo haga siempre ActiveGit.synchronize FileSave.new(instance.reload) if instance end after_destroy do instance = send model ActiveGit.synchronize FileSave.new(instance.reload) if instance end end end module InstanceMethods def git_dump JSON.pretty_generate(as_json(self.class.git_options)) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
active_git-0.0.10 | lib/active_git/active_record_extension.rb |
active_git-0.0.9 | lib/active_git/active_record_extension.rb |