Skip to Content Skip to Search
Methods
#
F
K
L
N
S
T
V

Class Public methods

new(indexes, row = nil)

# File activemodel/lib/active_model/indexed_row.rb, line 124
def initialize(indexes, row = nil)
  @indexes = indexes
  @row = row || Array.new(indexes.size, UNSET)
end

Instance Public methods

[](column)

# File activemodel/lib/active_model/indexed_row.rb, line 157
def [](column)
  if index = @indexes[column]
    value = @row[index]
    return if UNSET.equal?(value)
    value
  end
end

[]=(column, value)

# File activemodel/lib/active_model/indexed_row.rb, line 165
def []=(column, value)
  if index = @indexes[column]
    @row[index] = value
  else
    raise KeyError, "key not found: #{column.inspect}"
  end
end

fetch(column)

# File activemodel/lib/active_model/indexed_row.rb, line 173
def fetch(column)
  if index = @indexes[column]
    value = @row[index]
    if UNSET.equal?(value)
      if block_given?
        yield
      else
        raise KeyError, "key not found: #{column.inspect}"
      end
    else
      value
    end
  elsif block_given?
    yield
  else
    raise KeyError, "key not found: #{column.inspect}"
  end
end

key?(column)

# File activemodel/lib/active_model/indexed_row.rb, line 138
def key?(column)
  index = @indexes[column]
  index && !UNSET.equal?(@row[index])
end

keys()

# File activemodel/lib/active_model/indexed_row.rb, line 134
def keys
  @indexes.reject { |k, v| UNSET.equal?(@row[v]) }.keys
end

length()

Alias for: size

size()

Also aliased as: length
# File activemodel/lib/active_model/indexed_row.rb, line 129
def size
  @indexes.size - @row.count(UNSET)
end

to_h()

Also aliased as: to_hash
# File activemodel/lib/active_model/indexed_row.rb, line 192
def to_h
  @indexes.transform_values { |index| @row[index] }.reject { |k, v| UNSET.equal?(v) }
end

to_hash()

Alias for: to_h

values()

# File activemodel/lib/active_model/indexed_row.rb, line 143
def values
  @row.reject { |v| UNSET.equal?(v) }
end

values_at(*columns)

# File activemodel/lib/active_model/indexed_row.rb, line 147
def values_at(*columns)
  columns.map! do |column|
    if index = @indexes[column]
      value = @row[index]
      UNSET.equal?(value) ? nil : value
    end
  end
  columns
end