【发布时间】:2011-01-13 07:14:33
【问题描述】:
我基本上是在自学如何同时使用 RoR 和 MongoDB。 我正在关注非常好的书/教程:http://railstutorial.org/
我决定使用 mongomapper gem 将 Sqlite3 替换为 MongoDB。 一切正常,但我有一些非阻塞的小问题,我真的希望我能摆脱。
在第 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 驱动程序中实现?还是有其他一些我想不出来的聪明方法?
另外,这里有两件事: - 我按照书中的示例进行操作,所以我希望能够在沙盒模式下使用控制台,但显然这也不起作用:
(...)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
您可以就这些主题提供的任何建议都会对我有很大帮助!
谢谢,
亚历克斯
【问题讨论】:
标签: ruby-on-rails validation mongodb mongomapper