Reputation: 5107
I have the following models inside a Rails application:
class User
include Mongoid::Document
...
end
class Admin < User
...
end
I get a user:
u = User.find(some_key)
And try to change the _type:
u._type # => "User"
u._type = "Admin"
u.save
u._type # => "Admin"
But if I reload the object it's still a user:
u.reload
u._type = "User"
What is the correct way to change this?
Upvotes: 8
Views: 2928
Reputation: 985
you could also use Model#update_attribute to stay with mongoid:
user.update_attribute(:_type, "Admin")
Upvotes: 8
Reputation: 5107
Ended up solving it by using a raw MongoDB query:
users.update( { :"_id" => user.id }, { :"$set" => { :"_type" => "Admin" }})
Upvotes: 6