Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何动态确定控制器控制的模型?_Ruby On Rails_Dynamic_Model_Controller_Activesupport - Fatal编程技术网

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

Ruby on rails 如何动态确定控制器控制的模型?,ruby-on-rails,dynamic,model,controller,activesupport,Ruby On Rails,Dynamic,Model,Controller,Activesupport,我正在编写一个Rails插件,需要能够动态确定控制器与哪个模型关联。例如,如果我有一个PeopleController,我需要一个干净的方法来确定控制器处理人物模型 我已经浏览了API,还没有找到它的方法 将regexp与一些ActiveSupport屈折技巧(如singularize)结合使用是实现这一点的唯一方法吗 如果是,这种方法是否存在缺陷?什么是边缘情况?控制器和模型只是一种惯例,因此实际上没有办法做到这一点 你想做什么?这只是一个惯例,控制器和模型是相关的,所以实际上没有办法做到这一

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

我已经浏览了API,还没有找到它的方法

将regexp与一些
ActiveSupport
屈折技巧(如
singularize
)结合使用是实现这一点的唯一方法吗


如果是,这种方法是否存在缺陷?什么是边缘情况?

控制器和模型只是一种惯例,因此实际上没有办法做到这一点


你想做什么?

这只是一个惯例,控制器和模型是相关的,所以实际上没有办法做到这一点


您想做什么?

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

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

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

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

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

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

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

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

我正在控制器中动态添加ajax验证方法。类似这样:
ajax\u验证:first\u name,:last\u name
。我想我只需要第一个参数,即属性存在的模型名:
ajax\u验证:person、:first\u name、:last\u name
。谢谢是的,这可能是我在控制器中动态添加ajax验证方法时最简单的方法。类似这样:
ajax\u验证:first\u name,:last\u name
。我想我只需要第一个参数,即属性存在的模型名:
ajax\u验证:person、:first\u name、:last\u name
。谢谢是的,这可能是最简单的方法