从字符串中删除引号,以便我可以将其添加到控制器操作中
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
在重构我的仪表板控制器时,我将与每个不同用户多态类型相关的部分分解为它们自己的模型。
比如我用
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