Sha256: d7473e8ab55eca30d80603f6183fc08a3e29964cba0ea7b141980f0c56a8a44f

Contents?: true

Size: 923 Bytes

Versions: 10

Compression:

Stored size: 923 Bytes

Contents

module Gaku
  class SemesterConnector < ActiveRecord::Base

    belongs_to :semester
    belongs_to :semesterable, polymorphic: true

    validates :semester_id, :semesterable_type, :semesterable_id, presence: true

    validates :semester_id,
              uniqueness: { scope: %w( semesterable_type semesterable_id ), message: I18n.t(:'semester.already') }

    validates :semesterable_type,
              inclusion: { in: %w( Gaku::ClassGroup Gaku::Course ), message: '%{value} is not a valid' }

    %w( course class_group ).each do |resource|
      define_singleton_method "group_by_semester_#{resource}" do
        where(semesterable_type: extract_model_name(resource)).includes([:semester, :semesterable])
                                                              .group_by(&:semester_id)
      end
    end

    def self.extract_model_name(resource)
      resource.insert(0, 'gaku/').classify
    end

  end
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
gaku-0.2.4 core/app/models/gaku/semester_connector.rb
gaku_core-0.2.4 app/models/gaku/semester_connector.rb
gaku-0.2.3 core/app/models/gaku/semester_connector.rb
gaku_core-0.2.3 app/models/gaku/semester_connector.rb
gaku-0.2.2 core/app/models/gaku/semester_connector.rb
gaku_core-0.2.2 app/models/gaku/semester_connector.rb
gaku-0.2.1 core/app/models/gaku/semester_connector.rb
gaku_core-0.2.1 app/models/gaku/semester_connector.rb
gaku-0.2.0 core/app/models/gaku/semester_connector.rb
gaku_core-0.2.0 app/models/gaku/semester_connector.rb