从字符串中删除引号,以便我可以将其添加到控制器操作中

Remove quotes from string so I can add it to a controller action

在重构我的仪表板控制器时,我将与每个不同用户多态类型相关的部分分解为它们自己的模型。

比如我用

Dashboard::Teacher.new(current_user)

教师,

Dashboard::Student.new(current_user)

学生,

Dashboard::Parent.new(current_user)

对于 parents。

要删除重复代码,我如何将字符串形式的多态用户类型设置为:

Dashboard::#{UserTypeGoesHere}.new(current_user)?

您可以使用 Module#const_get 访问模块中定义的 class,基于其字符串值:

user_type = "Parent"
Dashboard.const_get(user_type).new(current_user)

在上面的代码中 Dashboard.const_get(user_type) 简单地计算为 Dashboard::Parent:

Dashboard.const_get("Parent") == Dashboard::Parent  # => true