Sha256: a8944f8bb330f65d2eb161241e7687678ee2a288a2d31a8622f4e0a372f8ae05
Contents?: true
Size: 944 Bytes
Versions: 10
Compression:
Stored size: 944 Bytes
Contents
module PassiveRecord module Core class Query < Struct.new(:klass, :conditions) def all return [] unless conditions klass.all.select do |instance| conditions.all? do |(field,value)| if value.is_a?(Hash) assn = instance.send(field) matched = assn && value.all? do |(assn_field,val)| if assn.is_a?(Array) assn.any? do |assc_model| assc_model.send(assn_field) == val end else assn.send(assn_field) == val end end matched else instance.send(field) == value end end end end def first all.first end def create klass.create(conditions) end def first_or_create first || create end end end end
Version data entries
10 entries across 10 versions & 1 rubygems