Я пишу сайт, который будет отображать объекты из MongoDB, идея в том, чтобы сделать его максимально гибким.Для этого я создал коллекцию config
, которая состоит из следующих объектов:
categories: {
"Title": { /// thats a displayed category title
[ collection: "collection_name", ] /// defaultize to title.snake_case
[ template: "some_template", ] /// defaultize to title.snake_case
[ css: { /// object will be passed to template
}, ]
fields: {
"Field Title": {
[name: "attribute_name" ,] /// defaultize to field_title.snake_case
[required: true or false, ] /// defaultize to false
[template: "template_name", ] /// defaultize to field_title.snake_case
[ css: { /// same as above, passed to template
// ..
}, ]
[validations: [
function(field_value, record){
return []; /// this should be array with errors or empty if none
},
["validationName", ...] /// this should be one of functions defined in validations collection name or DBRef to it
], ]
},
// ...
}
}
}
snake_case - это на самом деле метод String
, известный как underscore
в ActiveSupport: "AsdAsd" .underscore =>"asd_asd".Эти []
определяют необязательные атрибуты.
Все было хорошо и работало, как ожидалось, пока я не наткнулся на проверки.Эти проверки хранятся в MongoDB, и с помощью консоли я могу сделать так:
> db.config.findOne().categories.text.exec("some_string", {...});
[ ]
>
Могу ли я сделать то же самое с Ruby, используя MongoID или MongoMapper?Или я должен изменить свой подход?
Спасибо.