Ruby on Rails:如何为一个表和多个模型提供多个控制器

时间:2013-08-20 19:56:33

标签: ruby-on-rails rails-activerecord rails-routing

我是Ruby和Rails的新手。我和Sinatra玩过一段时间,但我认为Rails是我项目的一个更完整的框架。但是,我遇到了麻烦。

我正在使用相当庞大的现有且使用频繁的mySQL数据库,我正在尝试为此构建一个API来报告某些功能。在大多数情况下,所需的功能是某些分组的记录计数,然后深入细节。

例如,我们有一个table-tableA,其中包含许多与文档相关的信息。我们要报告的一条信息是给定语言中的项目数。语言代码针对每个项目存储,并且基于get请求,我想返回JSON。

请求: / languages /:code / count /:tablename

最具体的URL中有两个变量 - 我们正在计算的代码和我们计算的表。

据我所知,在routes.rb中我可以设置映射:

get '/languages/:code/count/:table', :controller=>'languages', :action=>'count'

我有一个控制器 - languages_controller.rb,里面有count方法。然后匹配到相应的视图文件count.html.erb

在我阅读的所有教程和我遵循的主要观点示例中,“语言”将成为数据库中的一个表格,因此可以在“魔术”Rails方法下使用。

我的问题是它不是一个表,而是调用的结果应该是tableA中字段的有限子集。例如语言代码和计数(id)。

语言描述需要“手动”查找,因为它存储为内部代码,不在任何地方的数据库中(历史决定/疯狂)。

问题:

  1. 我如何拥有一个只是字段子集的模型,以及一些手动填充的模型 - languagecode,isocode,description,count
  2. 我是否正确地认为,一旦我定义了模型,我就可以使用ActiveRecord从数据库中获取数据,然后在控制器中添加额外的信息?
  3. 我可以根据URL中发送的参数更改模型中的表吗?
  4. 基本上,我现在不知道如何处理这个问题。我已经定义了路由,视图模板到位,控制器在那里准备好了。数据库组件 - 从预先存在的表中获取一些数据对我来说似乎很神秘。

    任何帮助都非常感谢,似乎该框架目前正在阻碍我,我知道我不可能是唯一一个尝试此类事情的人,所以如果您有任何建议请分享。

1 个答案:

答案 0 :(得分:1)

根本不需要这里的模型。这不是ORM的用途。你应该做的只是对数据库运行原始SQL,并迭代结果。考虑做这样的事情:https://stackoverflow.com/a/14840547/229044