Sha256: 5c93aa6626804241e894b9bc206cdf99ff215f43f90bbacdb29efe13c112022b
Contents?: true
Size: 1.42 KB
Versions: 1
Compression:
Stored size: 1.42 KB
Contents
module Husky module DataSource class InMemory class << self def has_many(association) define_method association do singular_association = association.to_s[0..-2].to_sym klass_id = "#{self.class.name.split('::')[1].downcase}_id".to_sym repo = Husky::Repo::Registry.for(singular_association) set = repo.all.select { |k,v| v.send(klass_id) == self.id } Husky::DataSource::MemoryRelation.new(set, self, repo) end end end attr_reader :attributes attr_accessor :id def initialize(attributes) @attributes = attributes end def update_attributes(attrs) @attributes.each do |key, value| if attrs.key?(key) @attributes[key] = attrs[key] end end end end class MemoryRelation include Enumerable attr_reader :set, :caller, :receiver def initialize(set, caller, receiver) @set = set @caller = caller @receiver = receiver end def each set.map { |item| yield item } end def new(attributes) receiver.new({"#{caller.class.split('::').last.to_s.downcase}_id".to_sym => caller.id }) end def create(attributes) receiver.create({"#{caller.class.split('::').last.to_s.downcase}_id".to_sym => caller.id }) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
husky-0.2.5 | lib/husky/data_source.rb |