在关联mongoid上设置验证false

时间:2011-04-04 10:51:23

标签: ruby-on-rails-3 mongoid model-associations

我有两个型号

class Person
  embeds_one :address
end

class Address
  embedded_in :person
  field :city
  validates :city, :presence => true
end

现在我做的时候

person.address = Address.new

调用地址验证。但我不需要在我的情况下进行验证,也不能从地址中删除:validates(因为我以后需要它)。我想做(:validate => false)之类的事情。如果有人有想法,请告诉我!我使用的是mongoid-2.0.0。

3 个答案:

答案 0 :(得分:1)

您可以使用

person.address = Address.create

然后验证不会被调用我相信。更新记录并最终保存时,将调用验证。 也可以使用

之类的东西
person.address = Address.new :addres => "Valid address"

并且验证不会失败。

打开和关闭验证,对我来说似乎很奇怪,因为这会导致数据库中的地址无效......您可以更改验证例程以接受空地址,如果这样的地址是问题。

答案 1 :(得分:1)

我相信你想要的是:

address = person.build_address

或简单地说:

person.build_address

Refer to the "building and creating" section.

答案 2 :(得分:0)

如何创建自定义地址验证器,并检查它是否是新记录。如果是,那么它仍然是有空的电子邮件吗?