Если у вас в таблице продуктов только так мало строк, вам не нужно сильно беспокоиться о том, чтобы попасть в БД, чтобы получить их.Есть много способов избежать ненужных запросов к базе данных, но мы не можем рекомендовать вам не использовать БД для этой модели, не зная отношений и того, как они могут использоваться в вашем приложении.Если вам не нужна реляционная модель данных или mvc для продуктов, тогда вы можете использовать постоянный массив и, как Макс упомянул в комментариях, вы можете использовать методы Enumerable для обычного массива, такие как:
PRODUCTS ||= [
[name: 'tennis_balls', description: 'you need em'],
[name: 'racquets', description: 'have at least one'],
[name: 'sneakers', description: 'run fast with these']
].freeze
class Product
def self.by_name(name)
PRODUCTS.flatten.find{|a| a[:name] == name.to_s}
end
def self.by_names(names)
names.map{|name| by_name(name)}.compact
end
end
NowВы можете сделать
Product.by_name('sneakers')
# or
Product.by_name(:sneakers)
Или массив имен:
Product.by_names([:racquets, :sneakers])