2012-09-07 92 views
2

我想在我的Rails应用程序中分配一个属性,但是,当我重新查询数据库时,分配的数据消失。这里是我的模型:Mongoid持久性问题

class Scent 
    include Mongoid::Document 

    field :scentid, type: Integer 
    field :name 
    field :price 
    field :category 
    field :description 
    field :available, type: Boolean 

    belongs_to :order 
    embedded_in :cartitem 

    attr_accessible :name, :price, :category, :available 
end 

class Cartitem 
    include Mongoid::Document 

    field :quantity, type: Integer 

    embeds_one :scent 
    embedded_in :cart 
end 

下面是该查询我运行:

1.9.3p194 :001 > User.first.cart.cartitems.first.scent 
=> nil 
1.9.3p194 :060 > User.first.cart.cartitems.first.scent = Scent.first 
=> #<Scent _id: 50381e2ec8bafa1710000001, _type: nil, scentid: 1, name: "gold", price"99.99", category: "fresh", description: nil, available: true, order_id: nil> 
1.9.3p194 :061 > User.first.cart.cartitems.first.scent 
=> nil 

上为什么发生这种情况的任何想法?谢谢您的帮助!

编辑:这里是我的用户和车型号:

field :firstname 
    field :lastname 
    field :email 
    field :password 
    field :password_confirmation 
    field :password_digest 
    field :stripeid 
    field :remember_token 

    has_many :orders 
    embeds_many :address 
    embeds_one :cart 

    attr_accessible :firstname, :lastname, :email, :password, :password_confirmation 
    has_secure_password 
    before_save { |user| user.email = email.downcase } 
    before_save :create_remember_token 

    validates :firstname, presence: true, length: {maximum: 50} 
    validates :lastname, presence: true, length: {maximum: 50} 
    VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i 
    validates :email, presence: true, format: {with: VALID_EMAIL_REGEX}, uniqueness:{case_sensitive: false} 
    validates :password, presence: true, length: {minimum: 6} 
    validates :password_confirmation, presence: true 

    index({email:1}, {unique: true, name: 'email_index'}) 

    private 
    def create_remember_token 
    self.remember_token = SecureRandom.urlsafe_base64 
    end 
end 

class Cart 
    include Mongoid::Document 

    embedded_in :user 
    embeds_many :cartitems 

end 
+0

通过点击投票选项下方的右侧标记接受任意两个答案... – abhas

+0

User.first.cart.cartitems.first.scent = Scent.new被存储,但是,Scent.first不会。有什么想法吗? – pudding

回答

3

这里是你的答案

user = User.first.cart.cartitems.first 
user.scent = Scent.first 
user.save! 

它将很好地工作。

+0

对不起,这不起作用。当我再次查询User.first.cart.cartitem.first.scent我仍然得到零 – pudding

+0

请给用户和购物车模型也... – abhas

+0

更新用户和购物车模型 – pudding

3

你没有打电话给save到模型。

+0

我会在哪里调用save? – pudding