Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

212
Visualizações
Ruby on Rails cambiando la fecha sin guardar en el objeto

Estoy tratando de cambiar una entrada de 'hora' con la fecha ingresada en la entrada de 'fecha'. Entonces, si la hora es "2000-01-01 10:00:00 UTC" y la fecha es "2021-10-10", quiero que la salida sea "2021-10-10 10:00:00 UTC".

Sin embargo, casi lo tengo funcionando; cuando asigno la fecha actualizada al objeto original, no guarda el cambio. Por ejemplo, en el código a continuación, event_time contiene el tiempo adecuado que quiero, sin embargo, asignarlo a @event.time y luego imprimir @event.time muestra que el cambio no tuvo lugar.

 def create @event = Event.new(event_params) event_date = @event.date event_time = @event.time.change(:year => event_date.year, :month => event_date.month, :day => event_date.day) puts event_time # prints 2021-10-22 06:06:00 UTC @event.time = event_time puts @event.time # prints 2000-01-01 06:06:00 UTC if @event.save redirect_to(events_path) else render('new') end end

¿Alguna sugerencia? Soy nuevo en Ruby, así que probablemente me estoy perdiendo algo obvio aquí

Aquí está mi esquema

 create_table "events", force: :cascade do |t| t.date "date" t.string "description" t.boolean "isMandatory" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false t.string "name" t.time "time" t.string "location" end
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Puede consultar la respuesta SO aquí

El problema es que no hay una clase de hora del día en Ruby o Rails. Todas las clases de tiempo son fechas o marcas de tiempo (es decir, fecha más hora del día). Dentro de la base de datos será una columna de tiempo (sin zona horaria) y se comportará correctamente dentro de la base de datos. Sin embargo, una vez que la hora llega a Ruby, ActiveRecord agregará un componente de fecha porque no hay una clase de hora del día simple disponible, simplemente usa 2000-01-01 como fecha. Todo estará bien dentro de la base de datos, pero deberá tener un poco de precaución para ignorar el componente de fecha cuando esté fuera de la base de datos en Rails.

Use el datetime de columna de fecha y hora para contener una fecha y una hora. Solo use el time en la migración si no necesita la fecha (solo desea almacenar la parte del tiempo).

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda