0

ハッシュ条件と「Time.now」から -24 時間までの時間範囲を持つクエリを使用します。

@time_range = @time_now..(@time_now - 24*3600)
Model.all(:conditions => { :created_at => (@time_range) })

現時点では、24 時間以上前に作成されたすべてのデータベース レコードは表示されません。「古い」24 時間未満のすべてのレコードが表示されます。

私の目標は、定数値 24 をデータベース列「期間」からの変数に置き換えることです。この列には、データベース レコードがフォームでどのように作成されたかに応じて、24 から 1 までの整数値が含まれます。

したがって、この「期間」列にアクセスする必要があります。しかし、利用可能なモデル インスタンスがないため、Controller でそれを行う方法がわかりません。したがって、たとえば次のようには言えません。

Model.duration*3600

また:

:duration*3600

どんなヒントでも大歓迎です。

PS: この質問は別の質問に似ています。残念ながら、私はそこに答えを見つけることができませんでした。

4

2 に答える 2

0

それはあなたが考えるよりも答えるのが少し簡単です。Rails には、時間を計算するためのメソッド システムが組み込まれています。

1 日戻りたい場合は、1.day.from_now を実行するだけで済みます。または、2.day.from_now を実行することもできます。

これにより、データがタイムスタンプとして返​​されます。

1.day.from_now.beginning_of_day

1.month.from_now.beginning_of_month

1.month.from_now

1.day.from_now
于 2012-07-17T22:53:46.310 に答える
0

このコードは、あなたが探しているものである可能性があります。あなたが話していることとは正確には異なりますが、あなたがコメントしていたのと同じアイデアに基づいて構築されていると思います. それが役立つことを願っています。

def self.days_from_now(d)
    self.where("due_date >= ? AND due_date <= ? ", d.day.from_now.beginning_of_day, d.day.from_now.end_of_day)
end
于 2012-07-26T05:44:12.263 に答える