module Kirico::Helper
Public Instance Methods
define_code_mapper_method(*fields)
click to toggle source
指定したフィールドの値と区分値の値とをマッピングする メソッドを生やす。 対応表は models/mappers.ja.yml 参照
例:
cause_cd フィールドをマッピングするメソッド def mapped_birth_at_era value = object.send('cause_cd').try(:to_sym) class_name = object.class.underscore I18n.t("mappers.#{class_name}")[attr_name][value] end
# File lib/kirico/models/helper.rb, line 102 def define_code_mapper_method(*fields) fields.each do |attr_name| define_method("mapped_#{attr_name}") do value = send(attr_name) return if value.nil? class_name = self.class.name.underscore @mappers ||= YAML.load_file(File.join(__dir__, 'mappers.yml')) @mappers['mappers'][class_name.to_s].try(:[], attr_name.to_s).try(:[], value.to_s) end end end
define_format_date_method(*fields)
click to toggle source
指定した date 型のフィールドを整形するメソッドを生やす
例:
created_at メソッドを整形
# 2015/04/09 => 20150409 def fmt_ymd_created_at
return nil if submit_at.nil? submit_at.try(:to_era, '%Y%m%d')
end
# 2015/04/09 => 270409 def fmt_era_ymd_created_at
return nil if submit_at.nil? submit_at.try(:to_era, '%E%m%d')
end
# 2015/04/09 => H def submit_at_era_nengo
submit_at.try(:to_era, '%o%E').try(:[], 0)
end
# 2015/04/09 => 平成 def submit_at_era_nengo_kanji
submit_at.try(:to_era, '%O%E').try(:gsub, /\d+\z/, '')
end
# 2015/04/09 => 2015 def submit_at_year
submit_at.try(:strftime, '%Y')
end
# 2015/04/09 => 04 def submit_at_month
submit_at.try(:strftime, '%m')
end
2015/04/09 => 09 def submit_at_day
submit_at.try(:strftime, '%d')
end
# File lib/kirico/models/helper.rb, line 58 def define_format_date_method(*fields) fields.each do |attr_name| define_method("fmt_ymd_#{attr_name}") do send(attr_name).try(:strftime, '%Y%m%d') end define_method("fmt_era_ymd_#{attr_name}") do send(attr_name).try(:to_era, '%E%m%d') end define_method("#{attr_name}_era_nengo") do send(attr_name).try(:to_era, '%o%E').try(:[], 0) end define_method("#{attr_name}_era_nengo_kanji") do send(attr_name).try(:to_era, '%O%E').try(:gsub, /\d+\z/, '') end define_method("#{attr_name}_era_year") do send(attr_name).try(:to_era, '%E') end define_method("#{attr_name}_month") do send(attr_name).try(:strftime, '%m') end define_method("#{attr_name}_day") do send(attr_name).try(:strftime, '%d') end end end
define_in_k_method(*fields, op: :round, precision: 0)
click to toggle source
10^3 を単位とした値を返すメソッドを生やす
例: def monthly_income_currency_in_k
return nil if object.monthly_income_currency.nil? return 0 if object.monthly_income_currency == 0 (object.monthly_income_currency.to_f / 1000).round(0)
end
# File lib/kirico/models/helper.rb, line 122 def define_in_k_method(*fields, op: :round, precision: 0) fields.each do |attr_name| define_method("#{attr_name}_in_k") do original = send(attr_name) return nil if original.nil? # 浮動小数点対応 n = BigDecimal(original.to_s) / BigDecimal('1000') x = case op when :round n.send(op, precision) else n.send(op) end format("%.#{precision}f", x) end end end