docbrown/app/models/badge.rb
Philip How 3ceb9a178a
Allow some badges to be awarded multiple times (#20876)
* Add migration, update badgeachievements model and admin view to set flag on badges

* Show multiple badges on profile

* update factory

* badge model validation

* safe navigation to badge?

* add null: false to migratrion
2024-04-23 16:33:43 -04:00

30 lines
737 B
Ruby

class Badge < ApplicationRecord
mount_uploader :badge_image, BadgeUploader
resourcify
has_many :badge_achievements, dependent: :restrict_with_error
has_many :tags, dependent: :restrict_with_error
has_many :users, through: :badge_achievements
validates :badge_image, presence: true
validates :description, presence: true
validates :slug, presence: true
validates :title, presence: true, uniqueness: true
validates :allow_multiple_awards, inclusion: { in: [true, false] }
before_validation :generate_slug
def self.id_for_slug(slug)
select(:id).find_by(slug: slug)&.id
end
def path
"/badge/#{slug}"
end
private
def generate_slug
self.slug = CGI.escape(title.to_s).parameterize
end
end