我正在开发一个Ruby on Rails应用程序.我的问题更多的是关于Ruby语法.

我有一个带有类方法self.check的模型类:

class Cars < ActiveRecord::Base
  ...
  def self.check(name)
     self.all.each do |car|
          #if result is true, break out from the each block, and return the car how to...
          result = SOME_CONDITION_MEET?(car) #not related with database
     end

     puts "outside the each block."
  end
end

我想从eachonce停止/中断resulttrue(如果car.namename参数once相同,则中断each块),并返回导致true结果的car.如何在Ruby代码中突破?

推荐答案

你可以用break关键字来打断.例如

[1,2,3].each do |i|
  puts i
  break
end

将输出1.或者,如果要直接返回值,请使用return.

既然你更新了问题,下面是代码:

class Car < ActiveRecord::Base
  # …

  def self.check(name)
    self.all.each do |car|
      return car if some_condition_met?(car)
    end

    puts "outside the each block."
  end
end

不过你也可以用Array#detectArray#any?来达到这个目的.

Ruby-on-rails相关问答推荐

Rails 7涡轮框架和多种形式与形式值有关

form_with正在try 用错误的路径生成操作

在PDF生成中渲染 colored颜色

如何断言 Ruby 单元测试中的错误消息?

如何不需要rails/all?

如何使用 activerecord activerecord-session_store 在 Rails 应用程序中使用 cookie 值在数据库中查找会话记录

您将如何在 Ruby on Rails 应用程序中使用 rSpec 测试观察者?

有没有办法在 Rails 3.1 中检测用户代理

Rails - 设计 - 登录时出现错误消息?

为什么使用 HTTP PUT 和 DELETE 方法而不是 POST?

如何在 ruby​​ on rails 中获取控制器和操作列表?

Rails 3:如何正确显示textarea中的文本?

Rails:使用 RSpec 测试命名范围

如何从 ActiveRecord 中的每个组中获取最新记录?

Rails - 生产模式下的错误

是否有与 PHP 的 isset() 等效的 Rails?

在 Rails 中创建随机 DateTime 的最佳方法

获取完整的 rails 控制器名称,包括命名空间

如何为 Rails 迁移定义布尔字段

Ruby/Rails CSV 解析,UTF-8 中的无效字节序列