Pergunta

Eu precisa para executar essas SQL abaixo, mas eu não poderia obter o 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]}'"
)

Mas eu não consigo obter o resultado para newid.O único valor que eu comprei foi [#<Header>] Alguém pode me ajudar a criar a instrução correta para Ruby?

EDITAR:Campos da tabela

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

Obrigado.

Foi útil?

Solução

Você está recebendo um Cabeçalho objeto (que será preenchida com um id), então eu acho que no seu caso newid.id vai realmente dar-lhe a id que você está procurando, ou se você deseja uma matriz destes valores:

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

HTH

Outras dicas

O que você está recebendo de volta a partir do find é uma Matriz de objetos de Cabeçalho.

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

Eu poderia perguntar a mim mesmo por que eu preciso do id apesar de

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top