Zapytanie do mysql

Witam,

mam taki przypadek, mam model w którym są 2 pola z datami from, to, order_id oraz inne. Robię poniższe zapytanie które działa jak najbardziej ok

select sum(datediff(date_to, date_from)) as days from license_documents where order_id=184 and license_id=4

mam natomiast jeden problem, nie wiem jak dobrać się z poziomu ruby do zmiennej days.

Jak robię to jak poniżej to nie jestem w stanie dostać się za pomocą zmiennej doc do tej sumy days

[code]LicenseDocument.where(“select order_id, license_id, sum(datediff(date_to, date_from)) as days from license_documents where order_id = ? and license_id = ?”, order_id, line_item.license_id). each do |doc|

end[/code]
jak robiłem bezpośrednie zapytanie i testowałem to np. w IRB to dostaję tablicę z jednym elementem której wartość jest np. taka [[#BigDecimal:a5c3398,‘0.1E1’,9(18)]] .

Prośba o pomoc, jak tu dostać się do tej sumy, bo najszybciej jest dla mnie wykonać ten kod po stronie mysql niż ruby.

O ile zrozumiałem co chcesz zrobić i z czego korzystasz to moim zdaniem powinieneś na początku do modelu dodać metodę która będzie potrafiła policzyć ile dni licencji pozostało (podkreślam o ile zrozumiałem intencje)

class LicenseDocument < ActiveRecord::Base
  

  def days_to_end
    ((date_to - date_from) / 1.day).to_i
  end
end

potem pobrać odpowiedni obiekt i na nim zawłać metodę days_to_end:

ld = LicenseDocument.find_by_order_id_and_license_id(order_id, line_item.license_id)
ld.days_to_end

jeśli nie korzystasz z rails ów i activerecorda to napisz czym się łączysz do bazy danych.

Hej,

dzięki za odpowiedź ale chodzi o to, że całe wyliczenie robi mi mysql za pomocą tego zapytania co napisałem więc nie chcę żeby ruby w ogóle było tu używane, jeżeli spokojnie mysql zrobi mi to o wiele szybciej.
jedyne co chcę to dobrać się do wyniku ale tu mam problem. W przypadku gdy chcę odwołać się do kolumny days która jest stworzona dynamicznie w zapytaniu nie mogę zrobić tego standardowo za pomocą modelu bo wyrzuca błąd bo nie ma takiego pola w modelu.
W związku z tym chciałem zrobić bezpośrednie zapytanie do bazy i z wyniku zapytania wyciągnąć to pole ale nie wiem jak to zrobić.

Korzystam z railsów i activerecord ale tutaj to myślałem żeby coś takiego zrobić

sql = ActiveRecord::Base.connection() sql.execute("select sum(datediff(date_to, date_from)) as days from license_documents where order_id=184 and license_id=3")

dobra, już mam odpowiedź, niestety chodzi o to, że typy danych nie pasowały i trzeba było zrobić konwersję z BigDecimal do INT w Mysql żeby później w ruby można było normalnie dostać się do wyniku tak więc

select cast(sum(datediff(date_to, date_from)) as signed ) as days from license_documents where order_id=184 and license_id=4