joe*_*yar 24 ruby ruby-on-rails ruby-on-rails-3
有没有更好的方法在Ruby on Rails中实现这一目标?
我正在搜索11个字段,所有字段都是必需的,如果没有找到则初始化它.
将添加更多必填字段.
这个查询对我来说很完美,但它看起来不是最好的方法.
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)
Run Code Online (Sandbox Code Playgroud)
Fil*_*sti 75
在轨道3.2我会做
attributes = {}
Model.where(attributes).first_or_initialize
Run Code Online (Sandbox Code Playgroud)
文档http://apidock.com/rails/ActiveRecord/Relation/first_or_initialize
考虑到您使用的字段数量,您可能最好手动查找记录并初始化它(如果它不存在):
attributes = {
country: country,
engine: engine,
power: power,
body: body
etc ...
}
record = where(attributes).first
record = new(attributes) unless record
Run Code Online (Sandbox Code Playgroud)