Как использовать ActiveRecord Find динамически, передавая хэш параметров? - PullRequest
1 голос
/ 05 февраля 2012

Есть ли способ использовать 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 Ответ

1 голос
/ 05 февраля 2012

Я не знаю, можете ли вы сделать это в одну строку, но вам действительно нужно? как насчет такого:

cars = Car.where(params[:car])
if cars.any?
   @car = cars.first
else
   @car = Car.create(params[:car])
end 
...