Где поместить to_xls и from_xls в приложение rails - PullRequest
1 голос
/ 08 октября 2009

Итак, у меня есть модель, которую мне нужно иметь для сериализации / чтения из документа Excel (XLS). Я немного растерялся относительно того, где этот код на самом деле принадлежит. Сначала я думал, что to_xls - это представление, но после того, как я покопался и увидел такие вещи, как (to|from)_xml и (to|from)_json в ActiveRecord, мне стало интересно, возможно, этот материал принадлежит модели. Или же он принадлежит где-то целому контейнеру?

Для чего бы то ни было, пользователи будут скачивать модели с сайта, модифицировать их в excel, а затем публиковать.

Ответы [ 2 ]

0 голосов
/ 08 октября 2009

to / from_xls не поддерживаются Rails. Есть плагин, но я не использовал его плагин to_xls для Rails . Лучшим способом для вас может быть переход к CSV и обратно с помощью FasterCSV и получение чего-то, что можно использовать. Вот один пример: Экспорт to_csv из ActiveRecord

0 голосов
/ 08 октября 2009

to_xls должно определенно быть представлением. Я бы попробовал /app/views/foos/show.xls.erb, но если вам не нравится ERB для представлений XLS, попробуйте RbTemplateHandler , чтобы выполнить рендеринг в чистом Ruby.

from_xls совсем другой зверь. Это, конечно, не принадлежит контроллеру. По логике он принадлежит модели, но я бы извлек его в миксин. Если вы используете только модель XLS для одной модели, тогда достаточно выполнить следующую настройку:

# app/models/foo.rb
class Foo
  extend XLS2Foo
  ...
end

# lib/foo_from_xls
module XLS2Foo
  def to_foo(xls)
    ...
  end
end

Если вам нужно сделать это для нескольких моделей, вы можете попробовать DSL-генератор синтаксического анализатора в вашем каталоге lib и объявить себя синтаксическим анализатором для каждой модели в классах моделей.

...