forked from asonix/mastodon
Same URI passed between follow request and follow, since they are the same thing in ActivityPub. Local URIs are generated during creation using UUIDs and are passed to serializers.
42 lines
1.1 KiB
Ruby
42 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
# == Schema Information
|
|
#
|
|
# Table name: follows
|
|
#
|
|
# id :bigint(8) not null, primary key
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# account_id :bigint(8) not null
|
|
# target_account_id :bigint(8) not null
|
|
# show_reblogs :boolean default(TRUE), not null
|
|
# uri :string
|
|
#
|
|
|
|
class Follow < ApplicationRecord
|
|
include Paginable
|
|
include RelationshipCacheable
|
|
|
|
belongs_to :account, counter_cache: :following_count
|
|
|
|
belongs_to :target_account,
|
|
class_name: 'Account',
|
|
counter_cache: :followers_count
|
|
|
|
has_one :notification, as: :activity, dependent: :destroy
|
|
|
|
validates :account_id, uniqueness: { scope: :target_account_id }
|
|
|
|
scope :recent, -> { reorder(id: :desc) }
|
|
|
|
def local?
|
|
false # Force uri_for to use uri attribute
|
|
end
|
|
|
|
before_validation :set_uri, only: :create
|
|
|
|
private
|
|
|
|
def set_uri
|
|
self.uri = ActivityPub::TagManager.instance.generate_uri_for(self) if uri.nil?
|
|
end
|
|
end
|