2012-05-19 94 views
1

我跑的update_attributes命令加入我的一個用戶文檔兩個新添加的字段在我的rails控制檯和它說的命令時跑true,但沒有在數據庫中持續。Mongoid沒有的update_attributes堅持

User.last(簡體):

#<User _id: 4c77d555b1382g539f000022, first_name: "Jason", last_name: "Johnson"> 

命令我試圖運行(繼http://mongoid.org文檔):

User.last.update_attributes(nickname: 'Josh', email: '[email protected]') 
User.last.update_attribute(:nickname, 'Josh') # I get a NoMethodError: undefined method `update_attribute' 

user.rb

field :first_name 
    field :last_name 
    field :nickname # just added this 
    field :email # just added this 

mongoid寶石版本:

rails (3.0.3) 
mongoid (2.0.0.beta.20) 
+0

是有原因,你正在運行Mongoid 2.0.0的測試版?當前(穩定)版本是2.4.10。 – theTRON

回答

0

我懷疑你有一個空的用戶集合,當你有NoMethodError。 以下工作適用於Rails 3.2.3,Mongoid 2.4.10。 我建議複製並運行測試,以便爲每個測試的東西創建一個已知的環境。

class User 
    include Mongoid::Document 
    field :first_name 
    field :last_name 
    field :nickname 
    field :email 
end 

測試/單位/ user_test.rb

require 'test_helper' 

class UserTest < ActiveSupport::TestCase 
    def setup 
    User.delete_all 
    end 

    test "update_attribute" do 
    User.create(first_name: 'Jason', last_name: 'Johnson') 
    assert_equal(1, User.count) 
    p User.last 
    User.last.update_attribute(:nickname, 'Josh') 
    p User.last 
    User.last.update_attributes(nickname: 'Josh', email: '[email protected]') 
    p User.last 
    end 
end 

測試輸出

Run options: --name=test_update_attribute 

# Running tests: 

#<User _id: 4fc63ff5e4d30b08ca000001, _type: nil, first_name: "Jason", last_name: "Johnson", nickname: nil, email: nil> 
#<User _id: 4fc63ff5e4d30b08ca000001, _type: nil, first_name: "Jason", last_name: "Johnson", nickname: "Josh", email: nil> 
#<User _id: 4fc63ff5e4d30b08ca000001, _type: nil, first_name: "Jason", last_name: "Johnson", nickname: "Josh", email: "[email protected]"> 
. 

Finished tests in 0.019296s, 51.8242 tests/s, 51.8242 assertions/s. 
+0

如果我嘗試update_attributes(:_ type =>「ClassName」),那麼它不工作......但它的工作正常與update_attribute(:_類型,「ClassName」)。 –