Sha256: 789b58ed03138ad92d4e06d539acd6f22757fcfbd16aecc4b1173a841c761e7e
Contents?: true
Size: 1.45 KB
Versions: 2
Compression:
Stored size: 1.45 KB
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] accepts_nested_attributes_for :actions, :allow_destroy => true, reject_if: proc { |a| a[:name].blank? } validates :owner, presence: true validates :element, presence: true validates :permission_type, presence: true validate :presence_of_resource_id validate :presence_of_a_right def global_owner self.owner.to_global_id if self.owner.present? end def global_owner=(owner) self.owner = GlobalID::Locator.locate owner end def autosave_associated_records_for_actions self.actions = actions.reject{ |a| a._destroy == true }.map do |action| Adeia::Action.find_or_create_by(name: action.name) end end def full_name "#{id} - #{element.name} - R:#{read_right} - C:#{create_right}- U:#{update_right} - D:#{destroy_right} - #{resource_id} - #{actions.to_a}" end 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
adeia-0.4.0 | app/models/adeia/permission.rb |
adeia-0.3.0 | app/models/adeia/permission.rb |