Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/controllers/dojos_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@ def index
end

@dojos = []
dojos_scope.includes(:prefecture).order(is_active: :desc, order: :asc).each do |dojo|
dojos_scope.includes(:prefecture).order_by_active_status.order(order: :asc).each do |dojo|
# 年が選択されている場合は、その年末時点でのアクティブ状態を判定
# 選択されていない場合は、現在の is_active を使用
is_active_at_selected_time = if @selected_year
# その年末時点でアクティブだったかを判定
# inactivated_at が nil(まだアクティブ)または選択年より後に非アクティブ化
dojo.inactivated_at.nil? || dojo.inactivated_at > Time.zone.local(@selected_year).end_of_year
else
dojo.is_active
dojo.active?
end

@dojos << {
Expand Down
28 changes: 8 additions & 20 deletions app/models/dojo.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,13 @@ class Dojo < ApplicationRecord
before_save { self.email = self.email.downcase }

scope :default_order, -> { order(prefecture_id: :asc, order: :asc) }
scope :active, -> { where(is_active: true ) }
scope :inactive, -> { where(is_active: false) }
scope :active, -> { where(inactivated_at: nil) }
scope :inactive, -> { where.not(inactivated_at: nil) }

# ソート用スコープ: アクティブな道場を先に表示
scope :order_by_active_status, -> {
order(Arel.sql('CASE WHEN inactivated_at IS NULL THEN 0 ELSE 1 END'))
}

# 新しいスコープ: 特定の日時点でアクティブだったDojoを取得
scope :active_at, ->(date) {
Expand Down Expand Up @@ -103,27 +108,10 @@ def reactivate!
end
end

update!(
is_active: true,
inactivated_at: nil
)
update!(inactivated_at: nil)
end

# is_activeとinactivated_atの同期(移行期間中)
before_save :sync_active_status

private

def sync_active_status
if is_active_changed?
if is_active == false && inactivated_at.nil?
self.inactivated_at = Time.current
elsif is_active == true && inactivated_at.present?
# is_activeがtrueに変更された場合、inactivated_atをnilに
self.inactivated_at = nil
end
end
end

# Now 6+ tags are available since this PR:
# https://github.com/coderdojo-japan/coderdojo.jp/pull/1697
Expand Down
Loading