Sha256: 66082437ededd7fafdde36fd308d3d13592083cc4ee40053f0e18bb9451e8625

Contents?: true

Size: 857 Bytes

Versions: 1

Compression:

Stored size: 857 Bytes

Contents

class Adeia::Permission < ActiveRecord::Base
  belongs_to :owner, polymorphic: true
  belongs_to :element

  has_many :action_permissions, dependent: :destroy
  has_many :actions, through: :action_permissions

  enum permission_type: [:all_entries, :on_ownerships, :on_entry]

  validates :owner, presence: true
  validates :element, presence: true
  validates :permission_type, presence: true
  validate :presence_of_resource_id
  validate :presence_of_a_right

  private

  def presence_of_resource_id
    if permission_type == "on_entry" && resource_id.nil?
      errors.add(:resource_id, I18n.t("errors.messages.blank"))
    end
  end

  def presence_of_a_right
    if permission_type == "on_ownerships" && !(read_right || update_right || destroy_right || actions.any?)
      errors[:base] << I18n.t("errors.messages.right_required")
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
adeia-0.2.0 app/models/adeia/permission.rb