ruby – 如何使用有效?轨道3中阵列上的方法

我正在使用rails 3中的应用程序.

我有几条记录要保存到我的数据库中.我试图确保数组中的所有对象(记录存储在数组中)在保存之前是有效的.所有者模型验证名称和电子邮件的存在.在rails控制台中,我尝试了以下方法

@owner = Array.new
=> []

@owner[0] = Owner.new (name:"peter",email:"peter@gmail.com")
=> returns object

@owner[1] = Owner.new (name:"fred",email:"fred@gmail.com")
=> returns object

@owner[2] = Owner.new (name:"",email:"")
=> returns object

@owner[0].valid?
=> true

@owner[1].valid?
=> true

@owner[2].valid?
=> false

@owner.each { |t| t.valid? }
=> returns an array like this: [object1,object2,object3]. I would expect something like this instead: [true,true,false]

我不明白为什么.valid?如果我使用@owner [i]单独检查数组的元素,方法工作正常,但如果我使用.each迭代数组,则无法正常工作.有谁知道可能是什么问题?

我想要做的是实现这样的事情:

(@owner.each { |t| t.valid? }).all?

为了确保每条记录都有效,我可以继续保存它们.

谢谢

解决方法

每个都不返回有效数组?值.您可能想要:

(@owner.collect { |t| t.valid? }).all?

要么

(@owner.all? { |t| t.valid? })

这些例子也可以写成:

@owner.collect(&:valid?).all?

要么

@owner.all?(&:valid?)

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...