Ruby-on-rails – ruby on rails find_or_initialize

rubyruby-on-railsruby-on-rails-3

Is there any better way to achieve this in Ruby on Rails?

I'm searching for 11 fields and all are required also, and if not found initialize it.

There will be more required fields adding to it.

This query works perfect for me, but it just doesn't look like the best way to do this.

find_or_initialize_by_make_and_country_and_engine_and_power_and_body_and_doors_and_fuel_and_cylinders_and_transmission_and_gears_and_wheels(model,country,engine,power,body, doors, fuel, cylinders, transmission,gears,wheels)

Best Answer

On rails 3.2 I would do

attributes = {}
Model.where(attributes).first_or_initialize

Documentation http://apidock.com/rails/ActiveRecord/Relation/first_or_initialize