Pregunta

Necesito realizar estas SQL a continuación, pero no pude conseguir el resultado.

newid=Header.find_by_sql(
  "SELECT coalesce(max(transaction_id),0)+1 AS id 
  FROM transaction_headers 
  WHERE transaction_year = #{Time.now.year} AND 
  transaction_type='#{fields[:transaction_type]}'"
)

Pero me parece que no puede obtener el resultado a newid.El único valor que me dieron fue [#<Header>] Alguien me puede ayudar a crear la afirmación correcta para Ruby?

EDITAR:Campos de la tabla

-----------------------------------------------------------------------------------
| transaction_type | transaction_year | transaction_id | customer_id | uid | date |
-----------------------------------------------------------------------------------

Gracias.

¿Fue útil?

Solución

Está obteniendo un objeto de encabezado (que se rellenará con una identificación), así que creo que en su caso NewID.ID realmente le dará la identificación que está buscando, o si desea una matriz de estos valores.:

headers = Header.find_by_sql(...)
header_ids = headers.collect(&:id)

hth

Otros consejos

Lo que está recibiendo de vuelta de la find es una Matriz de Cabecera de los objetos.

headers = Header.find_by_sql(...)
newid = headers.first.id

Quizá me pregunto por qué tengo la necesidad de id a pesar de que

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top