2011-03-27 56 views
1

我正在使用Mongoid在表上执行批量插入,其中batch是一个哈希数组:批量插入是否可以在Mongodb中进行验证?

@state = State.new 
@state.collection.insert batch 

我是否通过这种方式绕过Activerecord?当我尝试验证记录时没有任何反应。

validates_format_of :population, :with => /\d+/ 

我也在尝试执行回调来格式化数据。

before_validation :generate_population 

没有任何反应。

回答

2

我的猜测是肯定的。在Grails驱动程序中,当您使用集合时会发生同样的事情。当你做.collection时,它绕过正常的GORM。看起来像Rails中会发生同样的事情。

解决方法是迭代批处理,并调用rails中存在的任何验证函数。在Grails中你会这样做:new state(it).valid();在Ruby中它可能就像batch.each {| it | State.new(it).valid}

问题是你应该怎么做,如果一个是无效的?

+0

有没有一种解决方法可以批量插入进行验证工作? – 2011-03-27 15:50:45

+0

上面添加了注释 – 2011-03-27 16:09:17