Как использовать ActiveRecord Find динамически, передавая хэш параметров?
Есть ли способ использовать find_or_initialize_by, но передать ему хэш параметров и выполнить поиск по ним?
У меня есть форма, которая позволяет пользователю создать автомобиль и указать для него различные компоненты (Car.engine_type, Car.model и т. Д.). Пользователь может указать только один компонент (Car.engine_type) или он может отправить кратные значения. Тем не менее, я хочу быть в состоянии найти, если автомобиль уже существует с этими компонентами, поэтому я не создаю дубликаты.
Я знаю о find_or_initialize_by, но моя проблема в том, что я не знаю во время выполнения, какие атрибуты модели будут отправлены, поэтому я не могу использовать этот динамический искатель. Одной отправкой может быть Car => {engine_type ="V6"}. Еще одна отправка может быть Car => {num_doors=>"4",model=>"Ford"}
1 ответ
Я не знаю, если вы можете сделать это в одну строку, но вам действительно нужно? как насчет чего-то вроде этого:
cars = Car.where(params[:car])
if cars.any?
@car = cars.first
else
@car = Car.create(params[:car])
end