Class: GraphQL::Dataloader::ActiveRecordSource
- Defined in:
- lib/graphql/dataloader/active_record_source.rb
Constant Summary
Constants inherited from Source
Instance Attribute Summary
Attributes inherited from Source
#dataloader, #pending, #results
Instance Method Summary collapse
-
#fetch(record_ids) ⇒ Object
-
#initialize(model_class, find_by: model_class.primary_key) ⇒ ActiveRecordSource
constructor
A new instance of ActiveRecordSource.
-
#load(requested_key) ⇒ Object
Methods inherited from Source
batch_key_for, #clear_cache, #load_all, #merge, #pending?, #request, #request_all, #result_key_for, #run_pending_keys, #setup, #sync
Constructor Details
#initialize(model_class, find_by: model_class.primary_key) ⇒ ActiveRecordSource
Returns a new instance of ActiveRecordSource.
7 8 9 10 11 |
# File 'lib/graphql/dataloader/active_record_source.rb', line 7 def initialize(model_class, find_by: model_class.primary_key) @model_class = model_class @find_by = find_by @type_for_column = @model_class.type_for_attribute(@find_by) end |
Instance Method Details
#fetch(record_ids) ⇒ Object
18 19 20 21 22 23 |
# File 'lib/graphql/dataloader/active_record_source.rb', line 18 def fetch(record_ids) records = @model_class.where(@find_by => record_ids) record_lookup = {} records.each { |r| record_lookup[r.public_send(@find_by)] = r } record_ids.map { |id| record_lookup[id] } end |
#load(requested_key) ⇒ Object
13 14 15 16 |
# File 'lib/graphql/dataloader/active_record_source.rb', line 13 def load(requested_key) casted_key = @type_for_column.cast(requested_key) super(casted_key) end |