このコードは、メソッドが実行される時刻に応じて開始日と終了日を設定するモデルにあります。私のモデルでこのコードを繰り返さない方法
は、右のコード例に飛び込むのをしてみましょう:
#MODEL
now = Time.now
if now.hour >= 17 && now.hour <= 23
#night
n = now+1.day
startd = Time.local(now.year, now.month, now.day, 17, 00, 00)
endd = Time.local(n.year, n.month, n.day, 8, 00, 00)
elsif now.hour >= 0 && now.hour <= 7
#morning
n = now-1.day
startd = Time.local(n.year, n.month, n.day, 8, 00, 00)
endd = Time.local(now.year, now.month, now.day, 17, 00, 00)
end
その後(同じまたは別の)モデルの内側に、私は、find内部でこの関数を実行しようとしています。
#MODEL(SAME OR OTHER)
Model.find(:all,
:conditions => ['created_at >= ? AND created_at <= ?', startd, endd])
問題
は、私はスタートを設定するには、その関数を使用するつもりだと終わりは多くのことをさかのぼり、そして私は自分自身を繰り返さないためにそれを配置する場所を知らないということです。それは別のモデルから使用される予定です。ありがとうございました。
これは良い解決策のように聞こえましたが、私はすでにそれを試しましたが、 ""エラーのための未定義のメソッド 'calc_start_and_end_times 'を与えました。モデルクラスの上にモジュールを含めました。何か案が? –
mickey
def self.calc_start_and_end_timesをdef_calc_start_and_end_timesに変更してみてください メソッド定義に自分自身が必要かどうかはわかりませんでした。 – erik
あまりにもそれを試して、申し訳ありませんが言及しないために。モデルからモジュールのメソッドにアクセスできないように思えます。 – mickey