我基本上在教自己如何同時使用RoR和MongoDB。 我跟着很好的書/教程:http://railstutorial.org/如何使用rails控制檯從mangomapper獲取驗證消息?
我決定使用mongomapper gem替換MongoDB的Sqlite3。 一切正常,但我有一些非阻塞的小問題,我真的希望我可以擺脫。
在第6章中,在驗證過程中,我得到了兩個問題: - 我不知道如何使用Sqlite3獲取驗證消息。
「標準」的代碼是:
$ rails console --sandbox
>> user = User.new(:name => "", :email => "[email protected]")
>> user.save
=> false
>> user.valid?
=> false
>> user.errors.full_messages
=> ["Name can't be blank"]
但如果我嘗試做MongoMapper一樣,它拋出一個錯誤,指出錯誤未定義功能。那麼這是否意味着這只是在mongomapper/mongo驅動程序中沒有實現?還是有其他一些聰明的方法來做到這一點,我無法想象?
另外,兩件事情在這裏: - 我按照書上的線爲例,所以我期待能夠使用沙盒模式控制檯,但顯然這無法正常工作或:
(...)[email protected]/gems/railties-3.0.3/lib/rails/console/sandbox.rb:1:in `<top (required)>': uninitialized constant ActiveRecord (NameError)
from /Users/Alex/.rvm/gems/[email protected]/gems/railties-3.0.3/lib/rails/application.rb:226:in `initialize_console'
from /Users/Alex/.rvm/gems/[email protected]/gems/railties-3.0.3/lib/rails/application.rb:153:in `load_console'
from /Users/Alex/.rvm/gems/[email protected]/gems/railties-3.0.3/lib/rails/commands/console.rb:26:in `start'
from /Users/Alex/.rvm/gems/[email protected]/gems/railties-3.0.3/lib/rails/commands/console.rb:8:in `start'
from /Users/Alex/.rvm/gems/[email protected]/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命名約定或什麼?
最後,我嘗試使用正則表達式驗證字段電子郵件,如教程中所示。它不會在代碼拋出的任何錯誤,但每當我試圖插入它只是永遠不會接受它,除非我註釋掉:格式選項...
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
任何建議您可以在這些主題提供會幫助我很多!
感謝,
亞歷
是的,我正在使用捆綁器。但從我在不同的教程和mongodb.com上看到的是,使用mongo驅動程序和映射器Rails沒有使用activerecord,這就是爲什麼我沒有將它添加到我的Gem中。 – Alex 2011-01-13 07:32:31