Activerecord Custom SQL в Ruby
-
16-09-2020 - |
Вопрос
Мне нужно выполнить эти SQL ниже, но я не мог получить результат.
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]}'"
)
.
Но я не могу получить результат в Newid.Единственное значение, которое я получил, был [#
Редактировать: поля таблицы
----------------------------------------------------------------------------------- | transaction_type | transaction_year | transaction_id | customer_id | uid | date | -----------------------------------------------------------------------------------.
Спасибо.
Решение
Вы получаете объект заголовка (который будет заполнен идентификатором), поэтому я думаю, что в вашем случае newid.id фактически даст вам идентификатор, который вы ищете, или если вы хотите, чтобы массив этих значений делают:
headers = Header.find_by_sql(...)
header_ids = headers.collect(&:id)
.
HTH
Другие советы
Что вы возвращаетесь из find
, - это массив объектов заголовка.
headers = Header.find_by_sql(...)
newid = headers.first.id
.
Я могу спросить себя, почему мне нужен генеракодицетагкод, хотя
Не связан с StackOverflow