Rails:帮助重构控制器

时间:2010-09-23 15:33:21

标签: ruby-on-rails

我有一个我想要重构的控制器。该控制器基本上呈现格式化的XML文档。

控制器主要做4件事。

  1. 它从数据库
  2. 获取记录
  3. 它从rails_root / config
  4. 读取静态xml文件
  5. 它使用数据库数据迭代DB记录和gsubs XML文档
  6. 它将XML文档呈现为:text
  7. 我的问题是:

    在Rails框架中2/3发生的正确位置在哪里?在我看来,他们不应该在控制器中。

    我在使用Rails 2.3

    干杯

1 个答案:

答案 0 :(得分:1)

我不知道最佳实践是什么,但在我的情况下,我会在模型中的一个类方法中执行1,2和3。我创建了一个模型方法,它接受基本XML文件的名称。

所以我会做这样的事情......(CAVEAT:我不是100%确定这在语法上是正确的,我还是Rails的新手)

# app/models/mymodel.rb
class MyModel < ActiveRecord::Base

  # ...

  def self.formatXml(xml_base)
    dataRecords = MyModel.find(:whatever) # step 1

    # open the XML and read it into a string, this is step 2
    # take the XML string, do the appropriate gsubs

    return my_xml_string;
  end
end

# app/controllers/mycontroller.rb
class MyController < ActionController::Base

  # ...

  def myAction
    formattedXml = MyModel.formatXml(whateverXmlFileName)

    render :text => formattedXml
  end
end