Replace OpenStruct with keyword Struct
Struct is much faster than open struct + will be depricated in ruby 3.5
replace OpenStruct
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