Fre*_*ind 4 ruby-on-rails mongodb mongoid
有两个类:
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
Run Code Online (Sandbox Code Playgroud)
我们可以看到,我们已经验证了city并且street应该存在.
但请参阅以下代码:
person = Person.new
person.addresses << Address.new
person.save #-> true
Run Code Online (Sandbox Code Playgroud)
而且,我们用来mongo直接查看数据库:
$mongo
> use the_db
> db.people.find()
{"_id":"xxxxx", "addresses":[{"_id":"xxxxx"}]}
Run Code Online (Sandbox Code Playgroud)
地址已插入.这意味着,validates_presence_of :city, :street在Address不工作.
我错过了什么吗?或者Mongoid中有一个错误?
试试这个
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
Run Code Online (Sandbox Code Playgroud)
现在我认为,如果你试图保存地址,那么你将无法保存人因为validates_assocaited:地址试图在保存人之前验证地址.
希望这有效
| 归档时间: |
|
| 查看次数: |
1470 次 |
| 最近记录: |