26

1 つのレコードのみが true になる検証を作成しようとしています。「アクティブな」ブール列を持つ「ゲーム」モデルがあります。いつでもアクティブにできるゲームは 1 つだけです。そのため、既にアクティブなゲームがあるときに誰かが新しい「ゲーム」レコードを作成しようとすると、エラーが発生するはずです。 . 以下は私が現在持っているものですが、機能していません!

validate :active_game

  def active_game
    if active == true && Game.find_by(active: true) == true
       errors[:name] = "a game is already active!"
    end
  end
4

3 に答える 3

70

true の場合、active_game の一意性を確認するだけでよいと思います。

validates_uniqueness_of :active_game, if: :active_game

于 2014-07-24T08:31:33.773 に答える