Skip to content

Improve API for "fetch" methods #510

Description

@dylanahsmith

The fetch methods (e.g. fetch_#{association_name}) for loading or accessing an already loaded cached record(s) seems inappropriate because

  1. It doesn't make it clear to those unfamiliar with this library that the data could come from the cache.
  2. It makes it easy for those using this library (naturally for performance reasons) to introduce uncached N+1 queries through lazy loading

Problem 1 seems like it came from the fetch method name being taken from Rails.cache.fetch, but the cache context has since been lost. This problem could be avoided by prefixing fetch methods with cache_ (e.g. cache_fetch_#{association_name}), where alias_method could be used for backwards compatibility.

Problem 2 would benefit from having an alternative method that raises instead of lazily loading when the data isn't already loaded (e.g. cacheable_#{association_name}). This alternative method should be used if the data is expected to already be loaded so that it can be used in a loop. Note that the accessed value may not have come from the cache or a cache_fetch_* method, given the Active Record association fallback (hence the suggested cacheable_ prefix).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions