Sha256: 5af22047eb5aa1951764f798bbd8bd4c0511bf5816d6f75c1edbc606e805b503

Contents?: true

Size: 923 Bytes

Versions: 10

Compression:

Stored size: 923 Bytes

Contents

class SpudRole < ActiveRecord::Base
  attr_accessible :name, :permission_tags

  has_many :spud_role_permissions, :dependent => :destroy
  has_many :users, :class_name => 'SpudUser'

  validates :name, :presence => true, :uniqueness => true

  def permissions
    self.spud_role_permissions.collect(&:permission).reject(&:blank?)
  end

  def permissions=(permissions_list)
    self.permission_tags = permissions_list.collect(&:tag)
  end

  def permission_tags=(tags)
    self.spud_role_permissions.each do |role_permission|
      if role_permission.permission.nil? || !tags.include?(role_permission.permission.tag)
        role_permission.destroy()
      else
        tags.delete(role_permission.permission.tag)
      end
    end
    self.spud_role_permissions += tags.collect{ |tag| SpudRolePermission.new(:spud_permission_tag => tag) }
  end

  def permission_tags
    return self.permissions.collect(&:tag)
  end

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
tb_core-1.1.10 app/models/spud_role.rb
tb_core-1.1.9 app/models/spud_role.rb
tb_core-1.1.8 app/models/spud_role.rb
tb_core-1.1.7 app/models/spud_role.rb
tb_core-1.1.6 app/models/spud_role.rb
tb_core-1.1.5 app/models/spud_role.rb
tb_core-1.1.4 app/models/spud_role.rb
tb_core-1.1.2 app/models/spud_role.rb
tb_core-1.1.1 app/models/spud_role.rb
tb_core-1.1.0 app/models/spud_role.rb