我正在编写Rails插件,并且需要能够动态确定控制器与哪个模型相关联。例如,如果我有一个PeopleController,我需要一种干净的方法来确定控制器处理Person模型。
我已经浏览了API,但没有找到适合它的方法。
唯一的方法是将此作为正则表达式与ActiveSupport
之类的singularize
变形技巧相结合吗?
如果是这样,这种方法有任何陷阱吗?有什么边缘案例?
答案 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