Module: NinjaModel::SpawnMethods
- Included in:
- Relation
- Defined in:
- lib/ninja_model/relation/spawn_methods.rb
Constant Summary collapse
- VALID_FIND_OPTIONS =
[:conditions, :limit, :offset, :order]
Instance Method Summary collapse
Instance Method Details
#apply_finder_options(options) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/ninja_model/relation/spawn_methods.rb', line 43 def () relation = clone return relation unless .assert_valid_keys(VALID_FIND_OPTIONS) finders = .dup finders.delete_if { |key, value| value.nil? } ([:order, :limit, :offset] & finders.keys).each do |finder| relation = relation.send(finder, finders[finder]) end relation = relation.where(finders[:conditions]) if .key?(:conditions) relation end |
#merge(r) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/ninja_model/relation/spawn_methods.rb', line 6 def merge(r) merged_relation = clone return merged_relation unless r return to_a & r if r.is_a?(Array) order_value = r.ordering if order_value.present? merged_relation.ordering = merged_relation.ordering + order_value end merged_predicates = @predicates + r.predicates unless @predicates.empty? seen = [] merged_predicates = merged_predicates.reverse.reject { |w| nuke = false if w.respond_to?(:operator) && w.operator == :== attribute = w.attribute nuke = seen[attribute] seen[attribute] = true end nuke }.reverse end merged_relation.predicates = merged_predicates Relation::SINGLE_VALUE_ATTRS.each do |method| value = r.send(:"#{method}_value") merged_relation.send(:"#{method}_value=", value) unless value.nil? end merged_relation end |