diff --git a/app/controllers/concerns/periodable.rb b/app/controllers/concerns/periodable.rb index 88be0f05c..bac475253 100644 --- a/app/controllers/concerns/periodable.rb +++ b/app/controllers/concerns/periodable.rb @@ -7,7 +7,12 @@ module Periodable private def set_period - period_key = params[:period] || Current.user&.default_period + if params[:period].present? + period_key = params[:period] + Current.user&.update!(default_period: period_key) if Period.valid_key?(period_key) + else + period_key = Current.user&.default_period + end @period = if period_key == "current_month" Period.current_month_for(Current.family) diff --git a/app/models/period.rb b/app/models/period.rb index fd1de6d1c..2f4e8afdf 100644 --- a/app/models/period.rb +++ b/app/models/period.rb @@ -95,6 +95,10 @@ class Period } class << self + def valid_key?(key) + PERIODS.key?(key) + end + def from_key(key) unless PERIODS.key?(key) raise InvalidKeyError, "Invalid period key: #{key}" diff --git a/app/views/settings/preferences/show.html.erb b/app/views/settings/preferences/show.html.erb index 8dd2c5053..2e8fa01b7 100644 --- a/app/views/settings/preferences/show.html.erb +++ b/app/views/settings/preferences/show.html.erb @@ -16,10 +16,6 @@ Family::DATE_FORMATS, { label: t(".date_format") }, { data: { auto_submit_form_target: "auto" } } %> - <%= form.select :default_period, - Period.all.map { |period| [ period.label, period.key ] }, - { label: t(".default_period") }, - { data: { auto_submit_form_target: "auto" } } %> <%= form.select :default_account_order, AccountOrder.all.map { |order| [ order.label, order.key ] }, { label: t(".default_account_order") },