Я учу себя, как использовать RoR и MongoDB одновременно.Я следую очень хорошей книге / учебнику: http://railstutorial.org/
Я решил заменить Sqlite3 на MongoDB, используя гем mongomapper.Все работает хорошо, но у меня есть некоторые неблокирующие небольшие проблемы, от которых я действительно хотел бы избавиться.
В главе 6 при работе с проверкой у меня возникли 2 проблемы:знать, как вернуть сообщения проверки, как с Sqlite3.
"Стандартный" код:
$ rails console --sandbox
>> user = User.new(:name => "", :email => "mhartl@example.com")
>> user.save
=> false
>> user.valid?
=> false
>> user.errors.full_messages
=> ["Name can't be blank"]
, но если я пытаюсь сделать то же самое с MongoMapper, выдается сообщение об ошибкеэта ошибка является неопределенной функцией.Значит ли это, что это просто не реализовано в драйвере mongomapper / mongo?Или есть какой-то другой умный способ сделать это, что я не мог понять?
Дополнительно, 2 вещи здесь: - Я следую за примером в книге к строке, поэтому я ожидал, что смогу использоватьконсоль в режиме песочницы, но, видимо, это тоже не работает:
(...)ruby-1.9.2-p136@rails3/gems/railties-3.0.3/lib/rails/console/sandbox.rb:1:in `<top (required)>': uninitialized constant ActiveRecord (NameError)
from /Users/Alex/.rvm/gems/ruby-1.9.2-p136@rails3/gems/railties-3.0.3/lib/rails/application.rb:226:in `initialize_console'
from /Users/Alex/.rvm/gems/ruby-1.9.2-p136@rails3/gems/railties-3.0.3/lib/rails/application.rb:153:in `load_console'
from /Users/Alex/.rvm/gems/ruby-1.9.2-p136@rails3/gems/railties-3.0.3/lib/rails/commands/console.rb:26:in `start'
from /Users/Alex/.rvm/gems/ruby-1.9.2-p136@rails3/gems/railties-3.0.3/lib/rails/commands/console.rb:8:in `start'
from /Users/Alex/.rvm/gems/ruby-1.9.2-p136@rails3/gems/railties-3.0.3/lib/rails/commands.rb:23:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Кроме того, в книге они называют «пользователь», но мне нужно вызвать «Пользователь» (обратите внимание на заглавную U), почему это так?Это похоже на то, что mangomapper не следует соглашению об именах Ruby или что-то в этом роде?
И, наконец, я пытаюсь проверить электронную почту поля с помощью регулярного выражения, как показано в руководстве.Он не выдает никаких ошибок в коде, но всякий раз, когда я пытаюсь вставить его, он просто не принимает его, пока я не закомментирую параметр: format ...
class User
include MongoMapper::Document
key :name, String, :required => true,
:length => { :maximum => 50 }
key :email, String, :required => true,
# :format => { :with => email_regex },
:uniqueness => { :case_sentitive => false}
timestamps!
end
Любые советы, которые вы можете предоставитьэти темы мне очень помогут!
Спасибо,
Алекс