我应该如何在rails中的胖用户模型中重构和提取这些方法?

时间:2018-05-22 15:07:54

标签: ruby-on-rails refactoring models

我目前正在重构一个包含800多行代码的用户模型(还有几百个已经通过mixin添加)。目前,模型中有相当多的方法,如下面的方法,仅用于根据某些特定标准识别用户类型。

def is_a_manager?
  # logic to determine manager
end

def is_a_teacher?
  # logic to determine teacher
end

def is_a_parent?
  # logic to determine parent
end

def is_a_student?
  # logic to determine student
end

def is_a_coach?
  # logic to determine coach
end

def is_a_employee?
  # logic to determine employee
end

重构此代码的最佳方法是什么?我应该把它放在一个问题中,并把它包括在课堂上吗?或者我应该将所有这些方法提取到它自己的单独的类中,例如UserIdentifier.new(user).is_teacher??或者这种重构完全没必要?

1 个答案:

答案 0 :(得分:0)

您可以使用干燥概念来检查类型:

def method_name(user_type)
  //logic example
  type == user_type
end

调用方法如:

User.method_name("Teacher")

我希望这对你有所帮助。