XML-сопоставление и проверка для моделей Rails - PullRequest
2 голосов
/ 22 июня 2010

Я реализую приложение, которое манипулирует XML-документами с использованием Ruby on Rails.Я хочу иметь модели, которые инкапсулируют всю логику, а затем преобразовывают их в соответствующий документ XML при сохранении.Хотя мне не нужно постоянство базы данных для моих моделей, я хочу, чтобы мои модели имели механизм валидации, подобный ActiveRecord.Кроме того, для преобразования между объектами XML и Ruby предпочтительнее использовать библиотеку отображений XML.

Хотя существует довольно несколько решений , которые позволяют использовать ActiveRecord без таблицы, кажется, чтоМне кажется, что библиотеки отображений XML (например, ROXML , XML Mapping ) плохо работают с полями ActiveRecord.Другими словами, не похоже, что они могут использоваться вместе из-за конфликта в их синтаксисе.

Поэтому я хотел бы знать, какие решения предпочтительнее в этом случае.Решение, которое позволяет использовать библиотеку привязки XML с бесстолбными моделями с функцией проверки.

Например, одно решение состоит в том, чтобы иметь две отдельные модели.Один из них - ActiveRecord без таблицы, а другой - простые объекты Ruby с привязкой xml (как описано в в этом посте ).Модели ActiveRecord предназначены для проверки.Чтобы преобразовать их в XML, сначала нужно будет скопировать их в модели связывания XML.Хотя это решение работает, оно не элегантно.

Ответы [ 2 ]

0 голосов
/ 01 июля 2010

Я мог бы сделать вопрос более сложным, чем он есть на самом деле.По сути, я хотел получить подмножество функций ActiveRecord (проверки, создание объекта из хеша) и привязку XML.В этом случае, вероятно, лучше использовать стандартные объекты Ruby с библиотеками, которые обеспечивают сопоставимую функциональность с ActiveRecord.Для проверки validatable подходит.Создание объекта из хеша также может быть легко реализовано.

Таким образом, класс Ruby + ROXML + проверяемый гем + настраиваемая реализация хеш-объект-это путь для меня.

0 голосов
/ 22 июня 2010

Вы говорите, что вам не нужно "постоянство базы данных", но затем вы говорите, что хотите сохранить их в файл XML и прочитать их из него.Так что вам нужно упорство - в файле.Разница между этим и «постоянством базы данных» является только лингвистической, поскольку у нас есть SQLite, который хранит всю базу данных в файле.

То, что вы хотите сделать, может быть сделано путем реализации вашего собственного адаптера .Это не будет сложно, но это займет некоторое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...