ActiveRecord SQL personalizada em Ruby
-
16-09-2020 - |
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.
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