Sha256: 9168cc813a1fb0caa150caf19e675ed881c37c84c75ee8107b1538e23c7f29df
Contents?: true
Size: 927 Bytes
Versions: 4
Compression:
Stored size: 927 Bytes
Contents
# frozen_string_literal: true module Thermos class Beverage attr_reader :key, :model, :deps, :action, :lookup_key def initialize(key:, model:, deps:, action:, lookup_key: nil) @key = key @model = model @lookup_key = lookup_key || :id @deps = deps.map do |dep| Dependency.new(model: model, association: dep) end @action = action set_observers end def lookup_keys_for_dep_model(dep_model) @deps.flat_map do |dep| return [] unless dep.klass == dep_model.class @model.joins(dep.association) .where(dep.table => { id: dep_model.id }) .pluck(@lookup_key) end.uniq end private def set_observers observe(@model) @deps.each { |dep| observe(dep.klass) } end def observe(model) model.include(Notifier) unless model.included_modules.include?(Notifier) end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
thermos-0.3.0 | lib/thermos/beverage.rb |
thermos-0.2.1 | lib/thermos/beverage.rb |
thermos-0.2.0 | lib/thermos/beverage.rb |
thermos-0.1.1 | lib/thermos/beverage.rb |