find_or_create_by en Rails 3 y actualización para crear registros
No estoy seguro de si debería actualizar los registros de esta manera o si me falta algo.
Tengo una tabla con 5 columnas (sin incluir marcas de tiempo e id) 3 de las cuales son distintas y 2 que se actualizarán. Los 3 distintos que encontraré o crearé son room_id, date y source. Los otros 2 son precios y lugares disponibles (estos cambian cada hora, todos los días, etc.)
Mi pregunta es, ¿primero debo encontrar o crear el registro, luego actualizar (o crear) el precio y los puntos o puedo hacerlo todo de una vez? Puede ver las dos formas en que lo estoy haciendo ahora, y no estoy seguro de si realmente está haciendo lo que esperaba.
Además, ¿hay alguna desventaja para hacer un find_and_create_by como este?
Gracia
private
def self.parse_data(params,data)
data.beds.each do |bed|
room = Room.find_or_create_room(bed.title, params[:id])
#find clones somehow
#puts bed.nights.first.price
bed.nights.each_with_index do |night,index|
available = Available.find_or_create_by_room_id_and_bookdate_and_source(
:room_id => room.id,
:bookdate => (params[:date].to_date)+index,
:source => data.class.to_s#,
#:price => night.price
)
#available.price = night.price
#available.spots = night.spots
#available.save
end
end