Я пытаюсь оптимизировать следующие модели бухгалтерского учета класса и два вопроса:Rails4 рефакторинг модель делает DRY
1) Как я могу заменить несколько сеттеров атрибутов с более изящным способом?
2) Есть ли лучший способ, чем если условно в методе replace_comma_with_dot
class Accounting < ActiveRecord::Base
validates :share_ksk, :central_office, :limit_value, :fix_disagio,
presence: true, numericality: { less_than: 999.99, greater_than_or_equal_to: 0.00 },
format: { with: /\d*\.\d{0,2}$/, multiline: true, message: I18n.t('accounting.two_digits_after_decimal_point')}
def share_ksk=(number)
replace_comma_with_dot(number)
super
end
def central_office=(number)
replace_comma_with_dot(number)
super
end
def limit_value=(number)
replace_comma_with_dot(number)
super
end
def fix_disagio=(number)
replace_comma_with_dot(number)
super
end
def replace_comma_with_dot(number)
if number.is_a? String
number.sub!(",", ".")
elsif number.is_a? Float
number
else
""
end
end
end
Как предложил пользователь Пардип я пытаюсь заменить мои добытчик с define_method:
[:share_ksk=, :central_office=, :limit_value=, :fix_disagio=].each do |method_name|
self.class.send :define_method, method_name do |number|
replace_comma_with_dot(number)
super
end
end
Что я я скучаю?
Обновление очень плохая практика –
Должен ли я придерживаться затем к четырем сеттеры? – StandardNerd
Возможно, я уже написал половину ответа - посмотрим, есть ли лучший способ. –