Class: Thermos::Beverage
- Inherits:
-
Object
- Object
- Thermos::Beverage
- Defined in:
- lib/thermos/beverage.rb
Instance Attribute Summary collapse
-
#action ⇒ Object
readonly
Returns the value of attribute action.
-
#deps ⇒ Object
readonly
Returns the value of attribute deps.
-
#filter ⇒ Object
readonly
Returns the value of attribute filter.
-
#key ⇒ Object
readonly
Returns the value of attribute key.
-
#lookup_key ⇒ Object
readonly
Returns the value of attribute lookup_key.
-
#model ⇒ Object
readonly
Returns the value of attribute model.
-
#queue ⇒ Object
readonly
Returns the value of attribute queue.
Instance Method Summary collapse
-
#initialize(key:, model:, deps:, action:, lookup_key: nil, filter: nil, queue: nil) ⇒ Beverage
constructor
A new instance of Beverage.
- #lookup_keys_for_dep_model(dep_model) ⇒ Object
- #should_fill?(model) ⇒ Boolean
Constructor Details
#initialize(key:, model:, deps:, action:, lookup_key: nil, filter: nil, queue: nil) ⇒ Beverage
Returns a new instance of Beverage.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/thermos/beverage.rb', line 7 def initialize( key:, model:, deps:, action:, lookup_key: nil, filter: nil, queue: nil ) @key = key @model = model @lookup_key = lookup_key || :id @filter = filter || nil @deps = generate_deps(model, deps) @action = action @queue = queue || ActiveJob::Base.default_queue_name set_observers end |
Instance Attribute Details
#action ⇒ Object (readonly)
Returns the value of attribute action.
5 6 7 |
# File 'lib/thermos/beverage.rb', line 5 def action @action end |
#deps ⇒ Object (readonly)
Returns the value of attribute deps.
5 6 7 |
# File 'lib/thermos/beverage.rb', line 5 def deps @deps end |
#filter ⇒ Object (readonly)
Returns the value of attribute filter.
5 6 7 |
# File 'lib/thermos/beverage.rb', line 5 def filter @filter end |
#key ⇒ Object (readonly)
Returns the value of attribute key.
5 6 7 |
# File 'lib/thermos/beverage.rb', line 5 def key @key end |
#lookup_key ⇒ Object (readonly)
Returns the value of attribute lookup_key.
5 6 7 |
# File 'lib/thermos/beverage.rb', line 5 def lookup_key @lookup_key end |
#model ⇒ Object (readonly)
Returns the value of attribute model.
5 6 7 |
# File 'lib/thermos/beverage.rb', line 5 def model @model end |
#queue ⇒ Object (readonly)
Returns the value of attribute queue.
5 6 7 |
# File 'lib/thermos/beverage.rb', line 5 def queue @queue end |
Instance Method Details
#lookup_keys_for_dep_model(dep_model) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/thermos/beverage.rb', line 27 def lookup_keys_for_dep_model(dep_model) @deps .select { |dep| dep.klass == dep_model.class } .flat_map do |dep| lookup_keys = [] @model .joins(dep.path) .where(dep.table => { id: dep_model.id }) .find_each do |model| lookup_keys << model.send(@lookup_key) if should_fill?(model) end lookup_keys end .uniq end |
#should_fill?(model) ⇒ Boolean
45 46 47 |
# File 'lib/thermos/beverage.rb', line 45 def should_fill?(model) @filter.class == Proc ? !!@filter.call(model) : true end |