微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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?)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐