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

Respuestas a la pregunta(2)

Su respuesta a la pregunta