ruby-on-rails Ruby -在特定目录中常量化

gcuhipw9  于 2022-11-19  发布在  Ruby
关注(0)|答案(1)|浏览(161)

在一个应用程序中,我有一个方法,它获取某个ActiveRecord的策略名称,如下所示:

def policy_for(record:)
  "#{record.class}Policy".constantize.new(record)
end

这是完美的工作,除了在一个例子中,我有一个模型和一个策略具有相同的名称。此行然后返回模型,而不是策略。
换句话说,问题:多个类具有相同的名称。

目标:需要一个constantize替代方法,该方法获取位于特定目录中的类,或者具有特定超类,例如(BasePolicy而不是ActiveRecord)。

如何在Ruby中执行此操作?

nhn9ugyo

nhn9ugyo1#

1 -在同一模块下不要有名称相似的类。
2 -在Rails中,模型将是最外层的上下文。因此考虑将您的策略移到Policies命名空间下。这将解决您的问题,并在将来解决类似的其他问题。

相关问题