SQL personnalisé ActiveRecord dans Ruby
-
16-09-2020 - |
Question
Je dois exécuter ces SQL ci-dessous, mais je n'ai pas pu obtenir le résultat.
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]}'"
)
Mais je n'arrive pas à transmettre le résultat à newid.La seule valeur que j'ai obtenue était [#u003CHeader> ] Quelqu'un peut m'aider à créer la bonne déclaration pour Ruby?
MODIFIER:Champs du tableau
----------------------------------------------------------------------------------- | transaction_type | transaction_year | transaction_id | customer_id | uid | date | -----------------------------------------------------------------------------------
Merci.
La solution
Vous obtenez un objet d'en-tête (qui sera rempli avec une pièce d'identité), alors je pense que dans votre cas, NEWID.ID vous donnera réellement l'identifiant que vous recherchez, ou si vous voulez un tableau de ces valeurs.:
headers = Header.find_by_sql(...)
header_ids = headers.collect(&:id)
htth
Autres conseils
Ce que vous récupérez du find
est un tableau d'objets d'en-tête.
headers = Header.find_by_sql(...)
newid = headers.first.id
Je pourrais me demander pourquoi j'ai besoin du id
cependant
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow