app/models/cm_permission.rb



class CmPermission < ApplicationRecord
  
  after_create :create_hidden_permission
  after_destroy :destroy_hidden_permission

  validates :action_name, presence: true, uniqueness: {scope: :ar_model_name}

  def create_hidden_permission
    if action_name == 'new'
      CmPermission.where(action_name: 'create', ar_model_name: ar_model_name, cm_role_id: cm_role_id).first_or_create
    elsif action_name == 'edit'
      CmPermission.where(action_name: 'update', ar_model_name: ar_model_name, cm_role_id: cm_role_id).first_or_create
    end
  end

  def destroy_hidden_permission
    if action_name == 'new'
      CmPermission.where(action_name: 'create', ar_model_name: ar_model_name, cm_role_id: cm_role_id).first&.destroy
    elsif action_name == 'edit'
      CmPermission.where(action_name: 'update', ar_model_name: ar_model_name, cm_role_id: cm_role_id).first&.destroy
    end
  end
end