Sha256: 6a5a7826ca81fd7c100dd8ec6140e1a22bc71b6076b76b294a0b0cd7a42a35e0

Contents?: true

Size: 1.26 KB

Versions: 36

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

module ActiveRecord
  module AttributeMethods
    # = Active Record Attribute Methods \Query
    module Query
      extend ActiveSupport::Concern

      included do
        attribute_method_suffix "?", parameters: false
      end

      def query_attribute(attr_name)
        value = self.public_send(attr_name)

        query_cast_attribute(attr_name, value)
      end

      def _query_attribute(attr_name) # :nodoc:
        value = self._read_attribute(attr_name.to_s)

        query_cast_attribute(attr_name, value)
      end

      alias :attribute? :query_attribute
      private :attribute?

      private
        def query_cast_attribute(attr_name, value)
          case value
          when true        then true
          when false, nil  then false
          else
            if !type_for_attribute(attr_name) { false }
              if Numeric === value || !value.match?(/[^0-9]/)
                !value.to_i.zero?
              else
                return false if ActiveModel::Type::Boolean::FALSE_VALUES.include?(value)
                !value.blank?
              end
            elsif value.respond_to?(:zero?)
              !value.zero?
            else
              !value.blank?
            end
          end
        end
    end
  end
end

Version data entries

36 entries across 36 versions & 4 rubygems

Version Path
activerecord-8.0.0 lib/active_record/attribute_methods/query.rb
activerecord-7.2.2 lib/active_record/attribute_methods/query.rb
activerecord-7.1.5 lib/active_record/attribute_methods/query.rb
activerecord-8.0.0.rc2 lib/active_record/attribute_methods/query.rb
activerecord-7.2.1.2 lib/active_record/attribute_methods/query.rb
activerecord-7.1.4.2 lib/active_record/attribute_methods/query.rb
activerecord-8.0.0.rc1 lib/active_record/attribute_methods/query.rb
activerecord-7.2.1.1 lib/active_record/attribute_methods/query.rb
activerecord-7.1.4.1 lib/active_record/attribute_methods/query.rb
activerecord-8.0.0.beta1 lib/active_record/attribute_methods/query.rb
omg-activerecord-8.0.0.alpha9 lib/active_record/attribute_methods/query.rb
omg-activerecord-8.0.0.alpha8 lib/active_record/attribute_methods/query.rb
omg-activerecord-8.0.0.alpha7 lib/active_record/attribute_methods/query.rb
omg-activerecord-8.0.0.alpha4 lib/active_record/attribute_methods/query.rb
omg-activerecord-8.0.0.alpha3 lib/active_record/attribute_methods/query.rb
omg-activerecord-8.0.0.alpha2 lib/active_record/attribute_methods/query.rb
omg-activerecord-8.0.0.alpha1 lib/active_record/attribute_methods/query.rb
activerecord-7.1.4 lib/active_record/attribute_methods/query.rb
activerecord-7.2.1 lib/active_record/attribute_methods/query.rb
activerecord-7.2.0 lib/active_record/attribute_methods/query.rb