所以我有一个模型,我需要能够从 Excel(XLS)文档中序列化/读取。对于这段代码的实际归属,我有点不知所措。我最初的想法是 to_xls 是一个视图,但是在四处浏览并看到 ActiveRecord 中的和之类的东西之后(to|from)_xml
,(to|from)_json
我想知道这些东西是否属于模型。或者,它是否属于某个完全独立的容器?
值得一提的是,用户将从网站下载模型,在 excel 中修改它们,然后发布它们。
所以我有一个模型,我需要能够从 Excel(XLS)文档中序列化/读取。对于这段代码的实际归属,我有点不知所措。我最初的想法是 to_xls 是一个视图,但是在四处浏览并看到 ActiveRecord 中的和之类的东西之后(to|from)_xml
,(to|from)_json
我想知道这些东西是否属于模型。或者,它是否属于某个完全独立的容器?
值得一提的是,用户将从网站下载模型,在 excel 中修改它们,然后发布它们。
to_xls
绝对应该是一种看法。我会尝试 a /app/views/foos/show.xls.erb
,但如果您不喜欢 ERB 用于 XLS 视图,请尝试使用RbTemplateHandler在纯 Ruby 中进行渲染。
from_xls
完全是另一种野兽。它当然不属于控制器。它在逻辑上属于模型,但我会将其提取到 mixin 中。如果您只为一个模型引入 XLS,那么以下设置就足够了:
# app/models/foo.rb
class Foo
extend XLS2Foo
...
end
# lib/foo_from_xls
module XLS2Foo
def to_foo(xls)
...
end
end
如果您需要为一堆模型执行此操作,您可以尝试在您的lib
目录中使用解析器生成器 DSL,并为模型类中的每个模型声明自己的解析器。
Rails 不支持 to/from_xls。有一个插件,但我还没有将它用于 Rails 的 to_xls 插件。更好的方法可能是让您使用FasterCSV 进出CSV并获得可用的东西。这是一个示例:从 ActiveRecord 导出 to_csv