2012-09-07 132 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