従業員の不在記録を含むアプリケーションがあります。Railsは日付範囲の一意性を確認します
各レコードの開始日と終了日が重ならないようにする必要があります。
たとえば、今日始まって明日に終了した不在記録を入力した場合、その日付範囲の別の内部を決して入力することはできません。だから私は今日の前日から始まるものを作ることができず、明日の後の日かそれ以降の日付に終わるものを作ることができませんでした。
簡単に言えば、日付範囲を一意にする必要があります。
これを達成する最も良い方法は何ですか?
モデルクラスのカスタムバリデーターは、すべてのレコードを反復処理するのには時間がかかりますが、この問題に対処する宝石は見つかりませんでした。私はまた、モデルの一意性によって範囲を決める簡単な方法も見つけていません。私は困惑しています:/
ありがとう!
編集:
class Absence < ActiveRecord::Base
attr_accessible :date, :date_ended, :status, :reason, :form, :user_id, :tempuser, :company_id
belongs_to :user
default_scope { where(company_id: Company.current_id) }
validates :date, :date_ended, :status, :reason, :form, :user_id, presence: true
validates_numericality_of :user_id, :only_integer => true, :message => "can only be whole number."
end
おそらく使用された日付を記録するモデルを作成しますか? EmployeeAbsenceDateのようなもの。これは、すべてのレコードを繰り返し処理するよりも速くなります。 – Edward