Ruby: MongoDB и сохраненные функции js (не хранимые процедуры!) - PullRequest
1 голос
/ 24 июля 2011

Я пишу сайт, который будет отображать объекты из 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?Или я должен изменить свой подход?

Спасибо.

...