instance method strict_loading!

Ruby on Rails 7.2.3

Since v6.1.7.10

Available in: v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

strict_loading!(value = true, mode: :all)

Sets the record to strict_loading mode. This will raise an error if the record tries to lazily load an association.

NOTE: Strict loading is disabled during validation in order to let the record validate its association.

user = User.first
user.strict_loading! # => true
user.address.city
# => ActiveRecord::StrictLoadingViolationError
user.comments.to_a
# => ActiveRecord::StrictLoadingViolationError

Parameters

  • value - Boolean specifying whether to enable or disable strict loading.

  • :mode - Symbol specifying strict loading mode. Defaults to :all. Using :n_plus_one_only mode will only raise an error if an association that will lead to an n plus one query is lazily loaded.

Examples

user = User.first
user.strict_loading!(false) # => false
user.address.city # => "Tatooine"
user.comments.to_a # => [#<Comment:0x00...]

user.strict_loading!(mode: :n_plus_one_only)
user.address.city # => "Tatooine"
user.comments.to_a # => [#<Comment:0x00...]
user.comments.first.ratings.to_a
# => ActiveRecord::StrictLoadingViolationError

Parameters

value opt = true
mode key = :all
Source
# File activerecord/lib/active_record/core.rb, line 707
    def strict_loading!(value = true, mode: :all)
      unless [:all, :n_plus_one_only].include?(mode)
        raise ArgumentError, "The :mode option must be one of [:all, :n_plus_one_only] but #{mode.inspect} was provided."
      end

      @strict_loading_mode = mode
      @strict_loading = value
    end

Defined in activerecord/lib/active_record/core.rb line 707 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveRecord::Core

Type at least 2 characters to search.

↑↓ navigate · open · esc close