class RecipeCollection
attr_accessor :featured, :time_filter
# Handles the logic of sorting params into a collection
def self.from_params(params)
RecipeCollection.new.tap do |recipe_collection|
recipe_collection.time_filter = params[:time_filter]
recipe_collection.featured = params[:featured]
end
end
# Should return an ActiveRecord relation
def recipes
query = Recipe.scoped
query.featured if featured.present?
query.filter_by_time(time_filter)
end
def time_filter
valid_time_filters.include?( @time_filter ) ? @time_filter : default_time_filter
end
def default_time_filter
"today"
end
def valid_time_filters
%w[ today yesterday this-week this-year ]
end
end