1

我正在编写一个 Rails 插件,并且需要能够动态确定控制器与哪个模型相关联。例如,如果我有一个 PeopleController,我需要一种干净的方式来确定控制器是否处理 Person 模型。

我查看了 API 并没有找到它的方法。

作为正则表达式与一些ActiveSupport变形技巧相结合的唯一方法是singularize

如果是这样,这种方法有什么陷阱吗?什么是边缘情况?

4

3 回答 3

1

这只是控制器和模型相关的约定,所以真的没有办法做到这一点。

你想做什么?

于 2010-02-10T00:09:02.937 回答
0

假设您遵循模型和控制器名称的 Rails 命名约定,您可以执行以下操作来获取模型名称/类。

# In a controller instance
klass = controller_name.classify.constantize
于 2010-02-10T05:57:00.640 回答
0

我只是修改了一个小 KandadaBoggu 答案,以使其对于控制器的任何实例都更加自动化。

# In a controller instance
klass_name = self.class.to_s.gsub(/Controller$/, '').singularize
klass = klass_name.constantize
于 2010-02-10T18:20:31.303 回答