forked from OpenNeo/impress
Emi Matchu
d470dde135
instead of doing the random choice we do for most colors. This is especially noticeable in cases where like, I'm looking at the Elderlyboy Ogrin and like, it has *work* put into the masc eyes, and them fem eyes are just the standard ones.
52 lines
1.2 KiB
Ruby
52 lines
1.2 KiB
Ruby
class Color < ApplicationRecord
|
|
has_many :pet_types
|
|
|
|
scope :alphabetical, -> { order(:name) }
|
|
scope :basic, -> { where(basic: true) }
|
|
scope :standard, -> { where(standard: true) }
|
|
scope :nonstandard, -> { where(standard: false) }
|
|
scope :funny, -> { order(:prank) unless pranks_funny? }
|
|
|
|
validates :name, presence: true
|
|
|
|
def as_json(options={})
|
|
{id: id, name: name, human_name: human_name}
|
|
end
|
|
|
|
def human_name
|
|
if prank? && !Color.pranks_funny?
|
|
unfunny_human_name + ' ' + I18n.translate('colors.prank_suffix')
|
|
else
|
|
unfunny_human_name
|
|
end
|
|
end
|
|
|
|
def example_pet_type(preferred_species: nil)
|
|
preferred_species ||= Species.first
|
|
pet_types.order([Arel.sql("species_id = ? DESC"), preferred_species.id],
|
|
"species_id ASC").first
|
|
end
|
|
|
|
def unfunny_human_name
|
|
if name
|
|
name.split(' ').map { |word| word.capitalize }.join(' ')
|
|
else
|
|
I18n.translate('colors.default_human_name')
|
|
end
|
|
end
|
|
|
|
def default_gender_presentation
|
|
if name.downcase.ends_with? "boy"
|
|
:masc
|
|
elsif name.downcase.ends_with? "girl"
|
|
:fem
|
|
else
|
|
nil
|
|
end
|
|
end
|
|
|
|
def self.pranks_funny?
|
|
now = Time.now.in_time_zone('Pacific Time (US & Canada)')
|
|
now.month == 4 && now.day == 1
|
|
end
|
|
end
|