Add database support and model for tips

This commit is contained in:
Sebastian Serth
2020-10-07 17:42:44 +02:00
parent 85a05225ec
commit 2e1c97d87d
7 changed files with 101 additions and 1 deletions

View File

@ -0,0 +1,18 @@
# frozen_string_literal: true
class ExerciseTip < ApplicationRecord
belongs_to :exercise
belongs_to :tip
belongs_to :parent_exercise_tip, class_name: 'ExerciseTip', optional: true
attr_accessor :children
# Ensure no parent tip is set if current tip has rank == 1
validates :rank, exclusion: {in: [1]}, if: :parent_exercise_tip_id?
validate :tip_chain?, if: :parent_exercise_tip_id?
def tip_chain?
# Ensure each referenced parent exercise tip is set for this exercise
errors.add :parent_exercise_tip, I18n.t('activerecord.errors.messages.together', attribute: I18n.t('activerecord.attributes.exercise_tip.tip')) unless ExerciseTip.exists?(exercise: exercise, tip: parent_exercise_tip)
end
end