1

有没有办法使用 find_or_initialize_by 但将参数的哈希传递给它并让它搜索那些?

我有一个表单,允许用户创建汽车,并为该汽车指定不同的组件(Car.engine_type、Car.model 等)。用户只能指定一个组件(Car.engine_type)或者他们可以提交多个。但是,我希望能够找到带有这些组件的 Car 是否已经存在,因此我不会创建重复项。

我知道 find_or_initialize_by 但我的问题是我不知道在运行时将提交哪些模型属性,所以我不能使用那个动态查找器。一项提交可能是 Car => {engine_type ="V6"}。另一个提交可能是 Car => {num_doors=>"4",model=>"Ford"}

4

1 回答 1

1

我不知道你是否可以一行完成,但你真的需要吗?像这样的东西怎么样:

cars = Car.where(params[:car])
if cars.any?
   @car = cars.first
else
   @car = Car.create(params[:car])
end 
于 2012-02-04T20:59:06.660 回答