ruby - 如何使用有效? rails 3中数组的方法

标签 ruby ruby-on-rails-3 activerecord ruby-on-rails-3.2

我正在使用 Rails 3 开发应用。

我有几条记录要保存到我的数据库中。我试图确保数组中的所有对象(记录存储在数组中)在保存之前都是有效的。 Owner 模型验证姓名和电子邮件的存在。在 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?

为了确保每条记录都是有效的,然后我可以继续保存它们。

谢谢

最佳答案

每个都不会返回 valid? 值的数组。您可能想要:

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

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

例子也可以写成:

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

@owner.all?(&:valid?)

关于ruby - 如何使用有效? rails 3中数组的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16949186/

相关文章:

ruby-on-rails-3 - 随着时间在 Torquebox 中的流逝,消费者不会减少

ruby-on-rails - Rails Active Record-从关系中获取ID数组

ruby - 多字节字符和 tr 命令

Ruby one liner 将数组元素传递到带有分隔符的字符串中

ruby - 如何使用 Ruby 的 optparse 解析没有名称的参数

ruby-on-rails-3 - 全文搜索 Rails 3

ruby-on-rails - rails : create scaffold for models to inherit from superclass?

ruby-on-rails - has_one owns_to 关联属性验证

ruby-on-rails - Rails 4 ActiveRecord 包括(:model) without its default_scope

ruby-on-rails - 我怎么知道什么时候将 Rails 中的模型对象设为 "refresh"?