2012-02-04 3 views
1

find_or_initialize_byを使用する方法がありますが、paramsのハッシュを渡して検索しますか?ActiveRecordの使い方Hash of paramsを渡して動的に検索しますか?

私は、ユーザーがCarを作成し、そのCar(Car.engine_type、Car.modelなど)に異なるコンポーネントを指定できるフォームを持っています。ユーザーは特定の1つのコンポーネント(Car.engine_type)しか指定できないか、複数回送信できます。しかし、私はそれらのコンポーネントでCarがすでに存在するかどうかを知りたいので、重複を作成していません。

私はfind_or_initialize_byを認識していますが、私の問題は実行時にどのモデル属性が送信されるかわからないため、その動的ファインダを使用できません。 1件の提出は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