Sha256: 62e35c24653cf0ef3f86253902ae151e56aeaac654faf44c4832600f98682004

Contents?: true

Size: 799 Bytes

Versions: 16

Compression:

Stored size: 799 Bytes

Contents

module Gaku
  class GradingMethodSet < ActiveRecord::Base
    has_many :grading_method_set_items, -> { order(:position) }
    has_many :grading_methods, through: :grading_method_set_items

    validates :name, presence: true, uniqueness: true

    before_save :ensure_first_is_primary, on: :create

    def self.primary
      where(primary: true).first
    end

    def make_primary
      GradingMethodSet.where.not(id: id).update_all(primary: false)
      update_attribute(:primary, true)
    end

    def items
      grading_method_set_items
    end

    private

    def ensure_first_is_primary
      self.primary = true if GradingMethodSet.all.empty?
    end

    def update_items_positions(id, index)
      grading_method_set_items.update_all({ position: index }, { id: id })
    end
  end
end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
gaku_core-0.3.0 app/models/gaku/grading_method_set.rb
gaku_core-0.3.0.pre.4 app/models/gaku/grading_method_set.rb
gaku_core-0.3.0.pre.3 app/models/gaku/grading_method_set.rb
gaku_core-0.3.0.pre.2 app/models/gaku/grading_method_set.rb
gaku_core-0.3.0.pre.1 app/models/gaku/grading_method_set.rb
gaku_core-0.3.0.pre.0 app/models/gaku/grading_method_set.rb
gaku-0.2.4 core/app/models/gaku/grading_method_set.rb
gaku_core-0.2.4 app/models/gaku/grading_method_set.rb
gaku-0.2.3 core/app/models/gaku/grading_method_set.rb
gaku_core-0.2.3 app/models/gaku/grading_method_set.rb
gaku-0.2.2 core/app/models/gaku/grading_method_set.rb
gaku_core-0.2.2 app/models/gaku/grading_method_set.rb
gaku-0.2.1 core/app/models/gaku/grading_method_set.rb
gaku_core-0.2.1 app/models/gaku/grading_method_set.rb
gaku-0.2.0 core/app/models/gaku/grading_method_set.rb
gaku_core-0.2.0 app/models/gaku/grading_method_set.rb