key*_*red 1 ruby mysql arrays ruby-on-rails
我目前正在编写一个ruby函数,它从数据库中获取一个表,然后根据数据创建一个数组.它是这样写的:
def listSome
@foos = Array.new
FooTable.find(:all) do |foo|
@foos << foo if foo.name == "Bar"
end
end
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是只有查询的第一个元素被添加到数组中.我已经检查过FooTable.find(:all)在控制台中返回我认为应该的内容,并且可以循环它的结果(我在每个循环上打印结果,它找到了它正在寻找的东西).但是,我怀疑,对于数组/集合的连接存在一些我不理解的问题.为什么我只将查询的第一个结果添加到我的数组中?谢谢.
您正在为该find方法提供一个块,该块不会针对它返回的数组的每个元素运行它.将块提供给each返回的方法find.
FooTable.find(:all).each { |foo| ... }
Run Code Online (Sandbox Code Playgroud)
此外,假设这是实际代码而不是示例,有一种非常糟糕的方法来获取具有特定名称的foos.
铁轨2
@foos = FooTable.find(:all, :conditions => ['name = ?', 'Bar'])
Run Code Online (Sandbox Code Playgroud)
铁轨3
@foos = FooTable.where('name = ?', 'Bar')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
624 次 |
| 最近记录: |