32 lines
987 B
Ruby
32 lines
987 B
Ruby
# == Schema Information
|
|
#
|
|
# Table name: follow_tags
|
|
#
|
|
# id :bigint(8) not null, primary key
|
|
# account_id :bigint(8)
|
|
# tag_id :bigint(8)
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# list_id :bigint(8)
|
|
# media_only :boolean default(FALSE), not null
|
|
#
|
|
|
|
class FollowTag < ApplicationRecord
|
|
belongs_to :account, inverse_of: :follow_tags, required: true
|
|
belongs_to :tag, inverse_of: :follow_tags, required: true
|
|
belongs_to :list, optional: true
|
|
|
|
delegate :name, to: :tag, allow_nil: true
|
|
|
|
validates_associated :tag, on: :create
|
|
validates :name, presence: true, on: :create
|
|
validates :account_id, uniqueness: { scope: [:tag_id, :list_id] }
|
|
|
|
scope :home, -> { where(list_id: nil) }
|
|
scope :list, -> { where.not(list_id: nil) }
|
|
scope :with_media, ->(status) { where(media_only: false) unless status.with_media? }
|
|
|
|
def name=(str)
|
|
self.tag = Tag.find_or_create_by_names(str.strip)&.first
|
|
end
|
|
end
|