ruby-on-rails - Mongoid 持久性问题

标签 ruby-on-rails mongodb mongoid

我试图在我的 Rails 应用程序中分配一个属性,但是,当我重新查询数据库时,分配的数据消失了。这是我的模型:

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+\-.]+@[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

最佳答案

这是你的答案

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

它会很好地工作。

关于ruby-on-rails - Mongoid 持久性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12310686/

相关文章:

ruby-on-rails - Rails 未定义方法 `persisted?'

ruby-on-rails - Rails - 从模型生成迁移脚本

mysql - 是否可以按组合排序?

ruby-on-rails - Mongoid,调用 update_attributes 两次以保持更改

javascript - 为什么我的 Mongoose 删除命令返回空响应?

javascript - Mongo ISODate - 如何检查是否已过去 30 天或更长时间?

mongodb - Mongoid attr_accessible 不工作

ruby-on-rails - 如何根据模型属性在索引 View 上设置复选框?

ruby-on-rails - Rails - 将字段添加到 JSON 响应

mongodb - mongo查询中的时区