Rails 从控制器过滤记录?

dan*_*mcc 0 ruby activerecord ruby-on-rails

我的 Calls 控制器中有以下代码:

@calls = Call.where(:destination => ("1234"),
                    :destination => ("5678"),
                    :destination => ("91011"))
Run Code Online (Sandbox Code Playgroud)

虽然上面的代码有效,但它只列出目的地为 91011 的记录。我想以某种方式显示目的地字段与任何数字匹配的所有记录。

我不确定是否应该为每个过滤器添加一个 .where 语句。

任何帮助,将不胜感激!

这与我不久前问的另一个问题非常相似。但是,这是为了进一步过滤查找条件而不是扩大范围。

Ser*_*sev 5

尝试这个:

@calls = Call.where(:destination => ["1234", "5678", "91011"])
Run Code Online (Sandbox Code Playgroud)

此外,如果您使用的是 ruby​​ 1.9,则可以使用新的哈希语法:

@calls = Call.where(destination: ["1234", "5678", "91011"])
Run Code Online (Sandbox Code Playgroud)

更新:

对于限制,有一种方法

@calls = Call.where(destination: ["1234", "5678", "91011"]).limit(10)
Run Code Online (Sandbox Code Playgroud)

我强烈建议你阅读ActiveRecord Query Interface,它太棒了!