加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 03:55:09 所属栏目:百科 来源:网络整理
导读:我正在使用rails 3中的应用程序. 我有几条记录要保存到我的数据库中.我试图确保数组中的所有对象(记录存储在数组中)在保存之前是有效的.所有者模型验证名称和电子邮件的存在.在rails控制台中,我尝试了以下方法: @owner = Array.new= []@owner[0] = Owner.ne
我正在使用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?)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读