我在我的rails控制台的一个用户文档中运行update_attributes
命令添加两个新添加的字段,并且在运行的命令上显示true
,但数据库中没有任何内容。
User.last(简化):
#<User _id: 4c77d555b1382g539f000022, first_name: "Jason", last_name: "Johnson">
我尝试运行的命令(遵循http://mongoid.org文档):
User.last.update_attributes(nickname: 'Josh', email: 'josh@gmail.com')
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 gem version:
rails (3.0.3)
mongoid (2.0.0.beta.20)
答案 0 :(得分: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: 'josh@gmail.com')
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: "josh@gmail.com">
.
Finished tests in 0.019296s, 51.8242 tests/s, 51.8242 assertions/s.