add achievement management
This commit is contained in:
6
app/models/completed_wow_achievement.rb
Normal file
6
app/models/completed_wow_achievement.rb
Normal file
@@ -0,0 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class CompletedWowAchievement < ApplicationRecord
|
||||
belongs_to :wow_character
|
||||
belongs_to :wow_achievement
|
||||
end
|
||||
6
app/models/completed_wow_achievement_criterium.rb
Normal file
6
app/models/completed_wow_achievement_criterium.rb
Normal file
@@ -0,0 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class CompletedWowAchievementCriterium < ApplicationRecord
|
||||
belongs_to :wow_character
|
||||
belongs_to :wow_achievement_criterium
|
||||
end
|
||||
22
app/models/wow_achievement.rb
Normal file
22
app/models/wow_achievement.rb
Normal file
@@ -0,0 +1,22 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class WowAchievement < ApplicationRecord
|
||||
extend Mobility
|
||||
translates :name, :description, :reward_description
|
||||
|
||||
belongs_to :wow_achievement_category, optional: true
|
||||
belongs_to :wow_achievement_criterium, optional: true
|
||||
|
||||
belongs_to :prerequisite_achievement, class_name: 'WowAchievement', optional: true
|
||||
has_one :next_achievement,
|
||||
class_name: 'WowAchievement',
|
||||
foreign_key: 'prerequisite_achievement_id',
|
||||
dependent: :nullify,
|
||||
inverse_of: :prerequisite_achievement
|
||||
|
||||
has_many :completed_wow_achievements, dependent: :destroy
|
||||
has_many :wow_characters, through: :completed_wow_achievements
|
||||
|
||||
validates :name, presence: true
|
||||
validates :achievement_id, presence: true, uniqueness: true
|
||||
end
|
||||
11
app/models/wow_achievement_category.rb
Normal file
11
app/models/wow_achievement_category.rb
Normal file
@@ -0,0 +1,11 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class WowAchievementCategory < ApplicationRecord
|
||||
extend Mobility
|
||||
translates :name
|
||||
|
||||
has_many :wow_achievements, dependent: :destroy
|
||||
|
||||
validates :name, presence: true
|
||||
validates :category_id, presence: true, uniqueness: true
|
||||
end
|
||||
18
app/models/wow_achievement_criterium.rb
Normal file
18
app/models/wow_achievement_criterium.rb
Normal file
@@ -0,0 +1,18 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class WowAchievementCriterium < ApplicationRecord
|
||||
extend Mobility
|
||||
translates :description, :operator_name
|
||||
|
||||
has_many :wow_achievements, dependent: :destroy
|
||||
has_many :child_criteria,
|
||||
class_name: 'WowAchievementCriterium',
|
||||
foreign_key: 'parent_criterium_id',
|
||||
dependent: :destroy,
|
||||
inverse_of: :parent_criterium
|
||||
belongs_to :parent_criterium, class_name: 'WowAchievementCriterium', optional: true
|
||||
has_many :completed_wow_achievement_criteria, dependent: :destroy
|
||||
has_many :wow_characters, through: :completed_wow_achievement_criteria
|
||||
|
||||
validates :criterium_id, presence: true, uniqueness: true
|
||||
end
|
||||
@@ -19,6 +19,10 @@ class WowCharacter < ApplicationRecord
|
||||
has_many :wow_reputations, through: :wow_standings
|
||||
has_many :wow_character_play_rp_worlds, dependent: :destroy
|
||||
has_many :rp_worlds, through: :wow_character_play_rp_worlds
|
||||
has_many :completed_wow_achievements, dependent: :destroy
|
||||
has_many :wow_achievements, through: :completed_wow_achievements
|
||||
has_many :completed_wow_achievement_criteria, dependent: :destroy
|
||||
has_many :wow_achievement_criteria, through: :completed_wow_achievement_criteria
|
||||
|
||||
validates :name, presence: true
|
||||
validates :character_id, presence: true, uniqueness: true
|
||||
|
||||
Reference in New Issue
Block a user