Sha256: ad06192045ca22b471c4c02e3c484d48ec820df257a74f1437e1fd43a456ede8

Contents?: true

Size: 887 Bytes

Versions: 13

Compression:

Stored size: 887 Bytes

Contents

class Role < AbstractAdapter
  belongs_to :user
  belongs_to :ownable, polymorphic: true

  validates_uniqueness_of :user_id, scope: [:ownable_type,:ownable_id], unless: Proc.new {|u| u.user_id.nil? }, message: "user has already been assigned that role"
  OWNABLE_TYPES = %w(Company Project).freeze
  validates_inclusion_of :ownable_type, in: OWNABLE_TYPES

  delegate :email, to: :user,              allow_nil: true
  def attributes
    super.merge(email: email)
  end

  def self.grape_validations
    { ownable_type: { values: OWNABLE_TYPES } }
  end

  def self.ownable_assign_options(_model=nil)
    (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

13 entries across 13 versions & 1 rubygems

Version Path
introspective_grape-0.5.7 spec/dummy/app/models/role.rb
introspective_grape-0.5.6 spec/dummy/app/models/role.rb
introspective_grape-0.5.5 spec/dummy/app/models/role.rb
introspective_grape-0.5.4 spec/dummy/app/models/role.rb
introspective_grape-0.5.2 spec/dummy/app/models/role.rb
introspective_grape-0.5.0 spec/dummy/app/models/role.rb
introspective_grape-0.4.3 spec/dummy/app/models/role.rb
introspective_grape-0.4.2 spec/dummy/app/models/role.rb
introspective_grape-0.4.1 spec/dummy/app/models/role.rb
introspective_grape-0.4.0 spec/dummy/app/models/role.rb
introspective_grape-0.3.9 spec/dummy/app/models/role.rb
introspective_grape-0.3.7 spec/dummy/app/models/role.rb
introspective_grape-0.3.6 spec/dummy/app/models/role.rb