cartodb/app/models/carto/shared_entity.rb

33 lines
998 B
Ruby
Raw Normal View History

2020-06-15 10:58:47 +08:00
require 'active_record'
require_relative '../shared_entity'
module Carto
class SharedEntity < ActiveRecord::Base
ENTITY_TYPE_VISUALIZATION = 'vis'.freeze
RECIPIENT_TYPE_USER = 'user'.freeze
RECIPIENT_TYPE_ORGANIZATION = 'org'.freeze
RECIPIENT_TYPE_GROUP = 'group'.freeze
scope :shared_visualizations, -> { where(entity_type: ENTITY_TYPE_VISUALIZATION) }
belongs_to :visualization, foreign_key: :entity_id, inverse_of: :shared_entities
validates :recipient_id, :recipient_type, :entity_id, :entity_type, presence: true
validates :recipient_id, uniqueness: { scope: :entity_id, message: 'is already taken' }
validate :supported_type
attr_accessible :entity_id, :recipient_id, :entity_type, :recipient_type
def self.columns
super.reject { |c| c.name == "id" }
end
private
def supported_type
errors.add(:entity_type, 'unsupported type') unless self.entity_type == ENTITY_TYPE_VISUALIZATION
end
end
end