otwarchive-symphonyarchive/app/models/potential_match_settings.rb

42 lines
1.4 KiB
Ruby
Raw Normal View History

2026-03-11 22:22:11 +00:00
class PotentialMatchSettings < ApplicationRecord
ALL = -1
REQUIRED_MATCH_OPTIONS = [
[ts("All"), ALL],
["0", 0],
["1", 1],
["2", 2],
["3", 3],
["4", 4],
["5", 5]
]
# VALIDATION
REQUIRED_TAG_ATTRIBUTES = %w(num_required_fandoms num_required_characters num_required_relationships num_required_freeforms num_required_categories
num_required_ratings num_required_archive_warnings)
REQUIRED_TAG_ATTRIBUTES.each do |tag_limit_field|
validates_inclusion_of tag_limit_field, in: REQUIRED_MATCH_OPTIONS.collect {|entry| entry[1]},
message: "%{value} is not a valid match setting"
end
# must have at least one matching request
validates_inclusion_of :num_required_prompts, in: REQUIRED_MATCH_OPTIONS.collect {|entry| entry[1]}.delete_if {|elem| elem == 0}, message: "%{value} is not a valid match setting"
# are all settings 0
def no_match_required?
REQUIRED_TAG_ATTRIBUTES.all? {|attrib| self.send("#{attrib}") == 0}
end
def required_types
TagSet::TAG_TYPES.select {|type| self.send("num_required_#{type.tableize}") != 0}
end
def topmost_required_type
required_types.first
end
def include_optional?(type)
send("include_optional_#{type.tableize}")
end
end