Railsで変数によるデータの取得
Ruby on rails初心者です。
Linux環境上で、railsのプログラミングをしているのですがわからないことがあり
教えてください。
データ(※)が定期的に蓄積されているような状況で、定期的に蓄積しているデータとは別に
ユーザがWeb上から入力した情報で蓄積したデータを取得するようなことをしたい。
(※)xxx/db/development.sqlite3
具体的に以下でご説明します。
<やりたい事>
①データベース上には数秒間隔でデータが蓄積されている。
②Web上からユーザに何分前のデータが欲しいか数字を入力
→ 例えばユーザが5を選択
③データベース上、直近のデータからユーザが指定した時間(例では5分前までのデータ)
までのデータ取り出す
<現状自分で解決できていない事>
ユーザから入力された変数をcontrollersに持ってくるところはできているのですが、
この変数を使って以前のデータを取ってくることができていません。
例えば5分前のデータを持ってくるようなケースでは以下のようなコーディングで
取得できることはわかりました。
from = 5.minutes.ago → ★
to = Time.now
hoge = DataClass.where(created_at: from..to).where(dataname: 1).count
→ 「created_atの中で現時刻から5分前に遡って、datanameが1のデータの数を数える。」
というコーディング。
データ取得の範囲が5分と決まっていればこれでいいのですが、何分前のデータかを
ユーザが決められるようにしたいのです。
仮にユーザが入力したデータを"hogedata"としてviewsからPOSTすることでcontrollersに
データを渡すことができることまではわかりました。
以下、viewsからPOSTされcontrollersで取得する際のコーディング例です。
hogeid = Rangearrow.maximum(:id) ← ユーザが入力した最後のIDを取得。
hogedata = Dataclass.where("id = ?",hogeid).pluck(:userdata) ← hogeidと同様のデータから欲しいデータ(userdata)を取得しhogedataとして保存。
※userdataがデータベース上の変数名
このhogedataで指定された範囲のデータを取得したいのですが、
★のイメージでいくと hogedata.minutes.ago とやるとエラーが出てしまいます。
変数の使い方が分かっていないのも理由かもしれませんが、Webを見ても解決できていない状況です。
特にやり方にはこだわらない(xx.minutes.agoでなくてもいい)のでユーザが入力したデータを
使ってデータベースのデータを範囲分取得する方法を教えてください。