如何动态确定控制器控制的模型?

时间:2010-02-09 23:29:21

标签: ruby-on-rails dynamic model controller activesupport

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

我已经浏览了API,但没有找到适合它的方法。

唯一的方法是将此作为正则表达式与ActiveSupport之类的singularize变形技巧相结合吗?

如果是这样,这种方法有任何陷阱吗?有什么边缘案例?

3 个答案:

答案 0 :(得分:1)

只是控制器和模型相关的惯例,所以实际上没有办法。

你想做什么?

答案 1 :(得分:0)

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

# In a controller instance
klass = controller_name.classify.constantize

答案 2 :(得分:0)

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

# In a controller instance
klass_name = self.class.to_s.gsub(/Controller$/, '').singularize
klass = klass_name.constantize