# frozen_string_literal: true class UserStatus < ActiveRecord::Base MAX_DESCRIPTION_LENGTH = 100 belongs_to :user validate :emoji_exists validates :description, length: { maximum: MAX_DESCRIPTION_LENGTH } validate :ends_at_greater_than_set_at, if: Proc.new { |t| t.will_save_change_to_set_at? || t.will_save_change_to_ends_at? } def expired? ends_at && ends_at < Time.zone.now end def emoji_exists errors.add(:emoji, :invalid) if emoji && !Emoji.exists?(emoji) end def ends_at_greater_than_set_at if ends_at && set_at > ends_at errors.add(:ends_at, I18n.t("user_status.errors.ends_at_should_be_greater_than_set_at")) end end end # == Schema Information # # Table name: user_statuses # # user_id :integer not null, primary key # emoji :string not null # description :string not null # set_at :datetime not null # ends_at :datetime #