我想编写一种可以像这样工作的方法
def create_new_car(salon)
Car.create name: salon.offer.name, description: salon.offer.description, photo: salon.offer.photo, dealer_id: salon.dealer_id
end
但我想让它保持干燥。有没有办法通过传递这些属性,我不知道,通过传递一个块来迭代属性数组?
我想编写一种可以像这样工作的方法
def create_new_car(salon)
Car.create name: salon.offer.name, description: salon.offer.description, photo: salon.offer.photo, dealer_id: salon.dealer_id
end
但我想让它保持干燥。有没有办法通过传递这些属性,我不知道,通过传递一个块来迭代属性数组?
您可以将块传递给create
:
def create_new_car(salon)
Car.create do |car|
car.name = salon.offer.name
car.description = salon.offer.description
car.photo = salon.offer.photo
car.dealer_id = salon.dealer_id
end
end
您还可以将一些属性设置为第一个参数,然后传递一个块:
Car.create(name: salon.offer.name) do |car|
car.description = salon.offer.description
#...
end
您可以在该块内实现您想要的任何逻辑来分配Car
属性,如下所示:
attributes = ["name", "description", "photo", "dealer_id"]
Car.create do |car|
attributes.each { |a| car.send( "#{a}=", salon.offer.send(a) )
end
请试试这个
array_of_attrbiutes = [{name: salon.offer.name...}, {name: }, {}...]
def create_new_car(array_of_attributes)
Car.create array_of_attributes
end
end