validates :uniqueness
フィールドが変更されていなくても、オブジェクトが保存されるたびに呼び出されますか? これはパフォーマンスの問題ではありませんか?
validates :name, :schedule_id, :uniqueness => true
そうなる場合もあるようです。バリデーションを実行する前に、変更が行われたことを確認することはほとんどの場合必要ではないでしょうか? 一意性をチェックするすべてのフィールドには、データベース ヒットが必要です。
これはより良いでしょう:
validates :name, :schedule_id, :uniqueness => true, :if => "name_changed? || schedule_id_changed?"
もう少し冗長であれば、これははるかに優れています。
validates :name, :uniqueness => true, :if => :name_changed?
validates :schedule_id, :uniqueness => true, :if => schedule_id_changed?