mysql - 在 Ruby on Rails 中添加到数组

标签 mysql ruby-on-rails ruby arrays

我目前正在编写一个 ruby​​ 函数,它从数据库中获取一个表,然后根据数据创建一个数组。是这样写的:

  def listSome
    @foos = Array.new
    FooTable.find(:all) do |foo|
      @foos << foo if foo.name == "Bar"
    end
  end

我遇到的问题是只有查询的第一个元素被添加到数组中。我已经检查过 FooTable.find(:all) 返回了我认为它应该在控制台中返回的内容,并且还可以循环结束它的结果(我在每个循环上打印了结果,它找到了它正在寻找的东西)。但是,我怀疑关于连接到数组/集合的某些东西我不明白。为什么我只将查询的第一个结果添加到我的数组中?谢谢。

最佳答案

您正在为 find 方法提供一个 block ,该方法不会针对它返回的数组的每个元素运行它。将您的代码块提供给 find 返回的 each 方法。

FooTable.find(:all).each { |foo| ... }

此外,假设这是实际代码而不是示例,那么获取具有特定名称的 foos 的方法非常糟糕。

rails 2

@foos = FooTable.find(:all, :conditions => ['name = ?', 'Bar'])

rails 3

@foos = FooTable.where('name = ?', 'Bar')

关于mysql - 在 Ruby on Rails 中添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4831157/

相关文章:

ruby - 如何使用 Nokogiri::XML::Reader 解析大型 XML 文件?

ruby-on-rails - 保持 rake 作业运行

mysql - SQL select - 包含不存在的行?

mysql - SQL : How to select all parent nodes in Materialized path?

php - 页面刷新时如何停止将数据重新输入数据库

ruby-on-rails - Rails 日期时间和装置

ruby-on-rails - 用于管理员的 Rails 基础 Controller

ruby - 使用正则表达式获取版本号

ruby-on-rails - ruby 重新排序日期数组,字符串部分保留空字符串

Rails 中的 Mysql 索引行为不当