Ruby on rails RubyonRails 2.3.8:有没有办法从模型中获取控制器名称?

Ruby on rails RubyonRails 2.3.8:有没有办法从模型中获取控制器名称?,ruby-on-rails,ruby,Ruby On Rails,Ruby,比如,假设我有一个名为:Vehicle 是否有任何诸如Vehicle.controller之类的命令会返回:vehicles\u controller或“vehicles\u controller”?我不知道,但创建这样的助手很容易: def controllerize(model) "#{model.name.tableize}_controller" end 更好的问题是你为什么想要它?听起来有点像代码的味道。没有很多好的理由让你的模型了解你的控制器。为什么?是路线决定了路径,而不是模

比如,假设我有一个名为:
Vehicle


是否有任何诸如
Vehicle.controller
之类的命令会返回
:vehicles\u controller
“vehicles\u controller”

我不知道,但创建这样的助手很容易:

def controllerize(model)
  "#{model.name.tableize}_controller"
end

更好的问题是你为什么想要它?听起来有点像代码的味道。没有很多好的理由让你的模型了解你的控制器。

为什么?是路线决定了路径,而不是模型

让您的模型了解路线毫无意义。模型用于处理业务逻辑和数据。路由是控制器的域


如果在您的routes.rb中有一条定义为
资源:车辆
的路线,则您可以通过
车辆路径
车辆路径
等形式获得路线。。。要了解您刚刚从应用程序根文件夹中的命令行运行了哪些路由,
rake routes

这只是一种命名约定和良好实践,可以让您免费获得一些东西,以Rails的方式进行,用户模型的控制器通常称为UsersController。如果您遵守约定,那么您可以编写一个方法来为您做到这一点。否则,答案是:“不,对不起。”

詹姆斯沃是正确的。我只是不认为有理由需要这样一个不指向反模式的助手。是的,事实证明,我真的不需要它。但是,选择的答案回答了我的问题。