Rename is_active to is_deleted. This is for better consistency with other models, and to reduce confusion over what "active" means for artists. Sometimes users think active is for whether the artist is actively producing work.
74 lines
1.5 KiB
Ruby
74 lines
1.5 KiB
Ruby
class ArtistVersion < ApplicationRecord
|
|
array_attribute :urls
|
|
array_attribute :other_names
|
|
|
|
belongs_to_updater
|
|
belongs_to :artist
|
|
|
|
module SearchMethods
|
|
def search(params)
|
|
q = super
|
|
|
|
q = q.search_attributes(params, :updater, :is_active, :is_banned, :artist_id, :name, :group_name)
|
|
|
|
if params[:order] == "name"
|
|
q = q.order("artist_versions.name").default_order
|
|
else
|
|
q = q.apply_default_order(params)
|
|
end
|
|
|
|
q
|
|
end
|
|
end
|
|
|
|
extend SearchMethods
|
|
|
|
def previous
|
|
@previous ||= begin
|
|
ArtistVersion.where("artist_id = ? and created_at < ?", artist_id, created_at).order("created_at desc").limit(1).to_a
|
|
end
|
|
@previous.first
|
|
end
|
|
|
|
def self.status_fields
|
|
{
|
|
name: "Renamed",
|
|
urls_changed: "URLs",
|
|
other_names_changed: "OtherNames",
|
|
group_name: "GroupName",
|
|
was_deleted: "Deleted",
|
|
was_undeleted: "Undeleted",
|
|
was_banned: "Banned",
|
|
was_unbanned: "Unbanned",
|
|
}
|
|
end
|
|
|
|
def other_names_changed
|
|
((other_names - previous.other_names) | (previous.other_names - other_names)).length > 0
|
|
end
|
|
|
|
def urls_changed
|
|
((urls - previous.urls) | (previous.urls - urls)).length > 0
|
|
end
|
|
|
|
def was_deleted
|
|
is_deleted && !previous.is_deleted
|
|
end
|
|
|
|
def was_undeleted
|
|
!is_deleted && previous.is_deleted
|
|
end
|
|
|
|
def was_banned
|
|
is_banned && !previous.is_banned
|
|
end
|
|
|
|
def was_unbanned
|
|
!is_banned && previous.is_banned
|
|
end
|
|
|
|
def self.available_includes
|
|
[:updater, :artist]
|
|
end
|
|
end
|