2013-08-28 2 views
0

Мне нужно загрузить проверки модели из таблицы и проверить мою модель. например У меня есть таблица базы данных называется валидация, которая имеет строки вроде:Загрузка валидаций из таблицы

validation_action  validation_condition 
----------------  -------------------- 

validates_presence_of if answer_name is name 
validates_format_of  if answer_type is date 

В моей модели я хочу:

class Model < ActiveRecord::Base 

load validation_actions , lambda {if validation_condition is true} 

Ok более подробно:

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

так две модели:

Questions -> table questions sas code and details about questions 
Answers -> table answers stores answers with a foreign key to Questions. 

Я хочу, чтобы подтвердить ввод данных в модели ответы в зависимости от условий, определенных в таблице базы данных вопросов.

Пожалуйста, дайте мне знать, если требуется более подробная информация?

+1

Так в чем же проблема? – Catfish

+2

Я вообще не понимаю, почему вам нужно иметь валидации в таблице базы данных. Не могли бы вы сформулировать свой вопрос с помощью реального кода модели, который вы пытаетесь получить из реальной базы данных и реальных строк проверки? –

+0

Я обновил проблему. – user1570144

ответ

0

Если я правильно понял, у вас есть вопросы, которые имеют много связанных ответов, а также связаны с ValidationActions. Когда ответ сохраняется, вы хотите выполнить проверки против него на основе оценки кода, хранящегося в ValidationActions, принадлежащего связанному с ним объекту Question.

Это похоже на плохую идею. Не так много, что валидации обусловлены состоянием связанного объекта (Вопрос), что происходит именно так, но что вы делаете то, что составляет выполнение кода из содержимого базы данных. Это одна из тех вещей, которые заставляют веб-разработчиков нервничать - проблема безопасности является наиболее очевидной причиной (что, если кто-то может редактировать поля вашей базы данных, они могут вызвать произвольный код для вашей системы), но это определенно сомнительная практика даже вне что (у меня возникают проблемы с выражением причины более убедительно, чем «код - это код, а данные - данные, и никогда не должно встречаться два», но там есть).

Все, что сказано, должно быть возможно написать специальный валидатор as explained here для его обработки. Он, несомненно, будет неэффективным, вполне может быть подвержен поломке и, вероятно, является дырой в безопасности, если он не написан очень тщательно. Но это возможно.

Смежные вопросы