質問: ?",hogeid).pluck(:userdata) ← hogeidと同様のデータから欲しいデータ(userdata)を取得しhogedataとして保存。 ※userdataがデータベース上の変数名 このhogedataで指定された範囲のデータを取得したいのですが、 ★のイメージでいくと hogedata.minutes.ago とやるとエラーが出てしまいます。 変数の使い方が分かっていないのも理由かもしれませんが、Webを見ても解決できていない状況です。 特にやり方にはこだわらない(xx.minutes.agoでなくてもいい)のでユーザが入力したデータを 使ってデータベースのデータを範囲分取得する方法を教えてください。
回答: 回答 エラーの内容は、`[5]`という`Array`に`minutes`というメソッドはないということです。 > > 変数の使い方が分かっていないのも理由かもしれませんが、Webを見ても解決できていない状況です。 > > > 推測ですが、おわかりになっていないのは、変数の使い方ではなく * オブジェクト指向 + クラス + メソッド + 他オブジェクト指向に関する知識もろもろ だと思います。 `hogedata.last.minutes.ago` とすると `5.minutes.ago`と同様のことができると思います(`hogedata`は`[5]`の前提)。 もしくは `hogedata = Dataclass.find(hogeid)` とすれば、`hogedata.userdata.minutes.ago` でもよいと思います。 追記:コメントへの回答 > > minutes.agoとlastを組み合わせて使えるというのはどうすればわかるものなのでしょうか? ご教授頂けますと助かります。 > > > `hogedata`は`[5]`という配列であることはわかりました。 `5.minutes.ago`は動くことはすでにわかっています。 この状況からなんとかして配列`[5]`から`5`を取り出したいわけです。 なので方法はなんでもよいです。 `hogedata.first`でも`hogedata[0]`でもよいわけです。 よく見かける例が`.last`なのでこれを選んだというわけです。 そして、メソッドをつなげることは、メソッドチェーンと呼ばれよく使われるプログラミング手法です。 つまり ``` foo = hogedata.last foo.minutes.ago ``` と同じことですが、`foo`への代入が無駄です。なのでメソッドチェーンで繋げます。 (`minutes.ago`がチェーンされている理由とまったく同じです)