@shaelf
PHP/Ruby developer

Codeclimate rails Similar code: как оптимизировать?

Решил начать использовать codeclimate в одном их своих проектов. Во всем проекте он нашел только 1 "душок"
def delivery_method=(deliver)
    unless product.shop.delivery_methods.include? deliver
      raise ArgumentError.new('This product does not contain delivery method')
    end
    self.delivery_method_id = deliver.id if deliver.kind_of?(DeliveryMethod)
end

def payment_method=(payment)
    unless product.shop.payment_methods.include? payment
      raise ArgumentError.new('This product does not contain payment method')
    end
    self.payment_method_id = payment.id if payment.kind_of?(PaymentMethod)
end


он видит это как дублирующее. Подскажите пожалуйста, как это можно "оптимизировать".
  • Вопрос задан
  • 2602 просмотра
Решения вопроса 1
@himik
def method=(type, object)
    unless product.shop.send("#{type}_methods").include?(object)
      raise ArgumentError.new('This product does not contain #{type} method')
    end
    self.send("#{type}_method_id}=", object.id) if object.kind_of?("#{type.capitalize}Method".constantize)
end
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы