ActiveRecord пользовательский SQL в Ruby - PullRequest
1 голос
/ 15 июля 2010

Мне нужно выполнить эти 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.Единственное значение, которое я получил, было [#

] Кто-нибудь может помочь мне создать правильный оператор для Ruby?

РЕДАКТИРОВАТЬ: Поля таблицы

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 15 июля 2010

Вы получаете объект Header (который будет заполнен идентификатором), поэтому я думаю, что в вашем случае newid.id фактически даст вам искомый идентификатор, или если вы хотите, чтобы массив этих значений делал :

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

НТН

0 голосов
/ 15 июля 2010

То, что вы получаете от find, это объекты массива заголовков.

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

Я мог бы спросить себя, зачем мне id, хотя

...