Я нахожусь в процессе создания конфигуратора продукта. Проблема в том, что каждый продукт имеет много компонентов, которые сами настраиваются. Представьте, что вы настраиваете компьютер при покупке. Зависимости иногда применяются, когда компонент выбран или когда количество компонента или даже комбинация обоих. В какой-то момент все становится очень сложным и несовместимо с продуктами, поскольку каждый из них является его собственной вселенной в некотором смысле.Преобразование текста в код
О, и эти правила изменяются все время, поэтому их кодирование в приложении на самом деле не вариант для меня.
Я надеялся, что сможет сохранить код метода, который называется validate в базе данных. Каждая конфигурация будет иметь собственную версию проверки, которая будет храниться в виде текста в db и может быть изменена, если это необходимо.
Is это можно сделать? Как я могу взять текст и на самом деле рельсы выполнять все, что написано в этом тексте?
Например у меня есть это:
irb(main):246:0> @h= Configuration.find(1).rule
=> "def getmax3(inputarray)\n @maxpos = 0\n inputarray.each do |h|\n if @maxpos < h.position\n @maxpos = h.position\n end\n end\n 1\n end"
который obviosly не код. Метод выше, конечно, просто тест, поскольку я пытаюсь понять вещи.
(О, и я знаю, что это должно быть ужасно практика, чтобы сделать это, но я действительно не могу придумать другой способ)
Спасибо большое!
Спасибо за ваш ответ. Я новичок RoR, поэтому предложение кажется долгим от реальности. Где я могу хранить эту конфигурационную библиотеку? Это что-то, что я вложил в приложение в виде файла? в папке Lib? – Lievcin
Начните как можно проще. Являются ли эти правила правилом проверки? поместите их в свою модель. Что-то связано с рабочим процессом вашего приложения? сделайте контроллер своим домом. Вы позже решите сами. – lbz