Rails 3 app model how ensure only one boolean field set to true at a time

后端 未结 8 842
误落风尘
误落风尘 2021-01-31 11:37

I have a Logo model that has fields of name:string, default:boolean. I want the true value to be unique, so that only one item in the database can be set to true at once. How do

8条回答
  •  粉色の甜心
    2021-01-31 11:57

    class Model < ApplicationRecord
      before_save :ensure_single_default, if: :is_default?
    
      private
    
      def ensure_single_default
        self.class.update_all(is_default: false)
      end
    end
    

    You don't need to check the id because this callback happens before the truthy one is saved.

提交回复
热议问题