病気/休暇日と、従業員がいずれかのカテゴリでどれだけ利用できるかを計算するアプリを作成しようとしています。これが私の問題です:
私の見解では、持続時間の方程式は機能し、正しい数値が表示されますが、ビューに数学を入れましたが、これは悪いことだとわかっています。しかし、従業員クラスで期間方程式を使用しようとすると (数学をビューの外に移動できるように) 機能しません。これは、期間が何らかの理由で「nil」として保存されているためだと思います。フォームに入力した情報と一緒に他のすべてがデータベースに保存されているため、なぜそうしているのかわかりません。
期間がフォームに手動で入力されておらず、日付範囲に反応しているためでしょうか?
従業員モデルで期間を呼び出して、ビューから計算を取得したい場所は次のとおりです。
def remaining_vacation_days
vacation_days - @furlough.duration if @furlough.description == "Vacation"
end
def remaining_sick_days
sick_days - @furlough.duration if @furlough.description == "Sick"
end
期間が定義されているモデルは次のとおりです。
class Furlough < ActiveRecord::Base
attr_accessible :duration # and other stuff
belongs_to :employee
validates_presence_of :duration # and other stuff
def duration
only_weekdays(date_from..date_to) - psb_holidays
end
def only_weekdays(range)
range.select { |d| (1..5).include?(d.wday) }.size
end
def psb_holidays
Holidays.between(date_from, date_to, :us, :observed).size
end
end
私をつまずかせているのは、コンソールに次のように表示されることです。
1.9.3-p0 :008 > ryan = Furlough.find(18)
Furlough Load (0.3ms) SELECT "furloughs".* FROM "furloughs" WHERE "furloughs"."id" = ? LIMIT 1 [["id", 18]]
=> #<Furlough id: 18, duration: nil, date_from: "2013-12-20", note: "Christmas vacation!", created_at: "2013-05-08 14:33:03", updated_at: "2013-05-08 14:34:07", employee_id: 16, description: "Vacation", date_to: "2013-12-29">
ほら、それはゼロですが、私はこれを取得します:
1.9.3-p0 :009 > ryan.duration
=> 5
私は途方に暮れています。