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