Sha256: b36b6fb844d07ca3b673acffc3a47fc306c18c36fe5821c0d69434d1e0d1b65a
Contents?: true
Size: 897 Bytes
Versions: 2
Compression:
Stored size: 897 Bytes
Contents
class Role < AbstractAdapter belongs_to :user belongs_to :ownable, polymorphic: true validates_uniqueness_of :user_id, scope: [:ownable_type,:ownable_id], unless: "user_id.nil?", message: "user has already been assigned that role" validates_inclusion_of :ownable_type, in: ['SuperUser', 'Company', 'Project'] delegate :email, to: :user, allow_nil: true def attributes super.merge(email: email) end def ownable # return the SuperUser null object ownable_type == 'SuperUser' ? SuperUser.new : super end def self.ownable_assign_options(model=nil) ([SuperUser.new] + Company.all + Project.all).map { |i| [ "#{i.class}: #{i.name}", "#{i.class}-#{i.id}"] } end def ownable_assign ownable.present? ? "#{ownable_type}-#{ownable_id}" : nil end def ownable_assign=(value) self.ownable_type,self.ownable_id = value.split('-') end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
introspective_grape-0.0.4 | spec/dummy/app/models/role.rb |
introspective_grape-0.0.3 | spec/dummy/app/models/role.rb |