創建方法,我想寫這會像這樣一個傳遞塊到紅寶石
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
你的答案的這個緯度部分是相當多我需要什麼,只有dealer_id不應該是屬性數組中,因爲它不是從報價,但取自沙龍。無論如何,thx,這是很好的領先 – Leo