Sha256: ea41fcc11ce7b1ebc7dca6349f4c68ec67f33b3a24db0965d1e62d1338351fc2

Contents?: true

Size: 970 Bytes

Versions: 62

Compression:

Stored size: 970 Bytes

Contents

module Workarea
  class User
    class AdminBookmark
      include ApplicationDocument

      field :name, type: String
      field :path, type: String

      belongs_to :user, class_name: 'Workarea::User', index: true

      validates :name, presence: true
      validates :path, presence: true

      before_validation :sanitize_path

      default_scope -> { desc(:created_at) }
      scope :by_user, ->(u) { where(user_id: u.id) }
      index({ created_at: -1 })

      def self.bookmarked?(user, path)
        by_user(user).where(path: sanitize_path(path)).count > 0
      end

      def self.sanitize_path(path)
        parsed = URI.parse(path)

        result = [parsed.path, parsed.query].join('?')
        result = "/#{result}" unless result.starts_with?('/')
        result = result[0..-2] if result.ends_with?('?')
        result
      end

      private

      def sanitize_path
        self.path = self.class.sanitize_path(path)
      end
    end
  end
end

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
workarea-core-3.5.27 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.5.26 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.4.45 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.5.25 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.5.23 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.4.44 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.5.22 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.4.43 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.5.21 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.4.42 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.5.20 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.4.41 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.5.19 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.4.40 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.5.18 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.4.39 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.5.17 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.4.38 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.5.16 app/models/workarea/user/admin_bookmark.rb
workarea-core-3.4.37 app/models/workarea/user/admin_bookmark.rb