我正在使用Mongoid在表上执行批量插入,其中batch是一个哈希数组:
@state = State.new
@state.collection.insert batch
我是否通过这种方式绕过Activerecord?当我尝试验证记录时没有任何反应。
validates_format_of :population, :with => /\d+/
我也在尝试执行回调来格式化数据。
before_validation :generate_population
没有任何反应。
答案 0 :(得分:2)
我的猜测是肯定的。在Grails驱动程序中,使用集合时会发生同样的事情。当你执行.collection时,它会绕过正常的GORM。好像在Rails中会发生同样的事情。
解决方法是遍历批处理并调用rails中存在的任何验证函数。在Grails中你会做:new State(it).valid();在Ruby中,它可能类似于batch.each {| it | State.new(it).valid}
问题是,如果一个人无效,你该怎么办?
答案 1 :(得分:0)
Most efficient way to format a hash of data?
这就是我最终处理这个问题的方法。我在链接的问题中指定了格式化函数,但也可以在那里添加验证功能。