Помощь проекта рельсов - PullRequest
1 голос
/ 04 августа 2009

я пытаюсь обдумать лучший способ разработки приложения в ruby ​​on rails

У меня есть система создания герцогства, которая для каждого документа имеет несколько ассоциаций, например, текстовые документы, изображения, дополнительные аксессуары и т. Д. Я создал эту систему сейчас для CRUD.

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

Я посмотрел на Globalize2, acts_as_audited, acts_as_versioned, paper_trail и deep_clone и на необходимость каждого из них!

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

любая помощь будет наиболее ценной.

спасибо Rick

Ответы [ 3 ]

1 голос
/ 04 августа 2009

спасибо askegg за ваш ответ

Дело в том, что actions_as_version не включает ваши отношения с моделями, и мне нужно создать версию для каждой модели документа вместе с моделями, ассоциированными с детьми?

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

большое спасибо рик

0 голосов
/ 04 августа 2009

Я подумал, что вы можете рассматривать каждое изображение, документ, pdf и т. Д. Как отдельные ресурсы, каждый со своими версиями - работая независимо от любых других. Если вам нужно клонировать документ и его дочерние элементы, вам нужно будет выполнить итерации по дочерним элементам, а также клонировать их - и дочерних элементов их детей. и т.д.

Глобализация (или любая другая платформа перевода) хороша только для простых / простых утверждений. Из-за синтаксических и грамматических проблем я не ожидал, что он сможет добиться хороших переводов между языками. Люди в этом хороши.

Мне приходит в голову, что вы могли бы подумать об использовании Git в качестве хранилища документов. Это дает вам полную версию документа с отслеживанием изменений. См. эту презентацию для некоторых идей. Не беспокойтесь обо всех технических деталях - просто подумайте, что это может сделать для вас. Хорошие вещи начинаются примерно через 15 минут. Библиотеку Grit Ruby можно найти здесь .

0 голосов
/ 04 августа 2009

Кажется, вы поняли базовую структуру, которую хотите, и исследовали некоторые альтернативы.

Первый проход моего чтения: у вас есть модель Документа, вероятно, с полиморфной ассоциацией с моделью Актива. Если подумать, документ - это просто тип актива, поэтому один может наследоваться от другого - возможно, наследование одной таблицы.

Отсюда, добавьте activ_as_versioned, чтобы иметь дело с ... ну, версионированием. Это также должно быть в состоянии дать вам различия между различными версиями, просто убедитесь, что вы записали user_id вместе с изменением.

Я не уверен, что Globalize или i18n помогут вам в этом, поскольку они более приспособлены для перевода самого веб-сайта с достаточно статичным содержанием, а не с высокодинамичными документами, такими как вы имеете дело. Я хотел бы оставить переводы для пользователей и использовать i18n для представления различных переводов самого веб-сайта.

Клонирование документа не должно быть слишком сложным - просто создайте новый документ и заполните информацию в нем. Вам, вероятно, понадобится поле cloned_from_id и для построения в модели собственной ссылочной has_many.

Ну, это мысли из головы.

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