Rails custom validation - Only one record can be true

后端 未结 3 1489
野性不改
野性不改 2021-02-05 04:44

I\'m trying to write a validation where only one record can be true. I have a \'game\' model with an \'active\' boolean column, only one game can be active at any time, so if so

3条回答
  •  星月不相逢
    2021-02-05 05:00

    Try using the exists? method. Also, add the error using the add method.

    validate :active_game
    scope :active, where(active: true)
    
      def active_game
        if active && Game.active.where("id != ?", id).exists?
           errors.add(:name, "a game is already active!")
        end
      end
    

提交回复
热议问题