【问题标题】:'validates_presence_of' doesn't work well in Mongoid?'validates_presence_of' 在 Mongoid 中效果不佳?
【发布时间】:2010-07-16 06:58:03
【问题描述】:

有两个类:

class Person
  include Mongoid::Document

  field :name
  embeds_many :addresses
end

class Address
  include Mongoid::Document

  field :city
  field :street

  validates_presence_of :city, :street
end

我们可以看到,我们已经验证了 citystreet 应该存在。

但是看下面的代码:

person = Person.new
person.addresses << Address.new
person.save #-> true

而且,我们使用mongo 直接查看数据库:

$mongo
> use the_db
> db.people.find()
{"_id":"xxxxx", "addresses":[{"_id":"xxxxx"}]}

地址已插入。这意味着Address 中的validates_presence_of :city, :street 不起作用。

我错过了什么吗?还是Mongoid有bug?

【问题讨论】:

    标签: ruby-on-rails mongodb mongoid


    【解决方案1】:

    试试这个

    class Person
      include Mongoid::Document
    
      field :name
      embeds_many :addresses
    
      validates_associated :addresses
    end
    
    
    class Address
      include Mongoid::Document
    
      field :city
      field :street
    
      embedded_in :person
      validates_presence_of :city, :street
    end
    

    现在我认为如果您尝试保存地址,那么您将无法保存人 因为 validates_assocaited :addresses 尝试在保存人员之前验证地址。
    希望这有效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 2018-01-20
      • 2018-06-07
      • 2012-02-26
      • 1970-01-01
      相关资源
      最近更新 更多