2012-02-04 2 views
1

find_or_initialize_by를 사용하지만 params의 해시를 전달하여 검색 할 수 있습니까?ActiveRecord를 사용하는 방법 Hash of params를 전달하여 동적으로 찾으시겠습니까?

사용자가 자동차를 만들고 해당 자동차 (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 
+1

'어디', 감사! 'Car.where (params) .exists?' – beeudoublez

관련 문제