HHH v4

Replace OpenStruct with keyword Struct

Edit
equivalent Web Development
Public
Struct is much faster than open struct + will be depricated in ruby 3.5


replace  OpenStruct

module BooksFiltersConcern
  def filter_params
    params.fetch(:filter, {}).permit(:name, :type, :released).tap do |item|
      item.delete(:type) if item[:type] == "all"
      item[:archived] = ActiveModel::Type::Boolean.new.cast(params[:archived])
    end
  end

  def filters
    OpenStruct.new(filter_params)
  end
end



With Struct

module BooksFiltersConcern
  VALID_FILTERS = %i[name type released archived].freeze
  Filters = Struct.new(*VALID_FILTERS, keyword_init: true)

  def filter_params
    params.fetch(:filter, {}).permit(:name, :type, :released).tap do |item|
      item.delete(:type) if item[:type] == "all"
      item[:archived] = ActiveModel::Type::Boolean.new.cast(params[:archived])
    end
  end

  def filters
    Filters.new(**filter_params)
  end
end