首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入代码在Rails中属于哪里?

导入代码在Rails中属于哪里?
EN

Stack Overflow用户
提问于 2013-03-11 17:59:05
回答 3查看 224关注 0票数 1

在我的Rails应用程序中,我必须导入大的XML文件,这将一次影响10个或更多的模型。

现在我不确定,这个导入的代码属于哪里。我是否应该将其包含在一个单独的模型中,将其分散到所有受影响的模型中,使用模块,甚至是关注点?

有没有人有这方面的经验,能给我一些建议?

EN

回答 3

Stack Overflow用户

发布于 2013-03-11 18:21:35

如果从一个XML文件中一次性导入,那么只需编写导入脚本并将其放入/lib/imports中,然后从rake任务或其他地方调用它。除非您需要将其分解到类方法中,否则我个人看不出这一点。

我们每天通过几个不同的导入脚本导入大约600MB的XML,它们都在/lib/imports中,并从rake任务中调用,而这些任务又是使用cron调度和运行的。

票数 3
EN

Stack Overflow用户

发布于 2013-03-11 22:53:27

我会使用app/models/tasks/somename_importer.rb并在那里封装所有的导入器内容。您还可以为要导入的实际数据对象创建一个模型。

代码语言:javascript
复制
class ImportedObject
  attr_accessor :have, :some, :accessor, :to, :hold, :data
  def initialize(data, *opts)
    # move data to instance variables
  end

  def to_object
    Object.new(some: mapping)
  end
end

class Tasks::SomeNameImporter
  def initialize
    # maybe setup some logging and stuff
  end

  def perform
    # fetch data from some source via http or file or ftp and iterate over appropriate items
    data.each do |item|
      imported = ObjectToImport.new(item)

      # you can do whatever you want with your imported data
      object   = imported.to_object
      if object.valid?        
        object.save
      else
        # do some logging 
      end
    end    
  end
end
票数 3
EN

Stack Overflow用户

发布于 2013-03-11 18:05:42

假设您可能还需要一些与xml交互的方法,我会这样做

代码语言:javascript
复制
class XmlBase < ActiveRecord::Base
  #import xml files

  def method_to_parse_xml
      #code
  end
end

在您的模型中(需要xml文件)

代码语言:javascript
复制
class User < XmlBase

end

class Project < XmlBase

end

#normal models
class Company < ActiveRecord::Base

end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15335652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档