class User < ActiveRecord::Base has_and_belongs_to_many :programs, :before_remove => :maintain_atleast_one validates_presence_of :programs protected def maintain_atleast_on(object) raise Exception.new('Need at least one program for a user') unless object.programs.size>1 end end