LoggedTimesがたくさんあるTaskがあります。私は任意の日にタスクに対してログに記録された時間の8時間の制限を入れたい。その人の最新のログ記録された時間が「制限を超えて合計を取るかどうか」を1日分確認することができるようにするには、これを行う最善の方法は何ですか?私が始めていますのはここRailsで関連するモデル検証と設計のいくつかの質問
だ(Task.rb):
validate :max_logged_daily_time
def max_logged_daily_time
if (params[:session_time] + (logged_times.where(:created_at => Date.today).to_a.sum(&:session_time)/60)) > 8
errors.add_to_base("Can't have more than 8 hours logged a day")
logged_time.errors.add('session_time', 'Logged times exceeded today')
end
end
現在、この検証ではなく、以前のログに記録された回の一回8時間は単に休息に追加登録されている別のLoggedTimeを追加する(動作していませんエラーが発生していないので、私は問題を解決するために苦労していますが、これはパラメータの処理と関係していますか?
ユーザーが8時間からそれらのログに記録した総時間を差し引くだけで済むようにビューを修正することができますY;しかし、これは厄介な解決策であり、モデルのバリデーションを維持するという原則に反しているようです。 (そして、私はこのモデルバリデーションの問題を解決するのに役立ちません)。
こちらのアドバイスはありますか?
TIA
ここのコンセプトのいくつかは私にとって新しいものです(noob)ので、私はそれらを選択し、消化して動作するかどうかを確認する必要があります:)歓声 –
こんにちは再びzetetic。私はちょうど私がタスクモデルを介して検証しない理由を尋ねて、validates_associated?言い換えれば、LoggedTimeのスコープメソッドの美徳は、Taskモデルの検証と比べて何ですか?デフtotal_hrs_for_date(日= Date.today) practices.where( '??のcreated_at> = ANDのcreated_at <'、日付、日付+ 1).to_a.sum(&:session_time)/60.0 終了 デフ 練習をhours_today .daily_hours_by_activity(self).to_a.sum(&:session_time) end –
argh。どのように私はコードでコメントをフォーマットするのですか? ;) –