活动记录从包含在数组

时间:2016-02-13 23:55:36

标签: ruby-on-rails activerecord

我正在使用Rails,我想进行查询。我想我只是一个大脑放屁,但也许不是。我有一个数据进入我的控制器,如下所示。

units = [
  {:name=>"barbarian", :level=>5, :count=>10},
  {:name=>"archer", :level=>6, :count=>10}
]

我的模型包含与namelevel相对应的数据。我想创建一个类似以下的查询......

Unit.where('name = ? AND level = ? OR name = ? AND level = ?', "barbarian", 5, "archer", 6)

哪个会从Unit模型中产生两条记录。但我只是想更聪明一点,因为我在units数组中有大约30个项目。这可能吗?如果没有,还有其他选择吗?

2 个答案:

答案 0 :(得分:0)

我可能会做这样的事情

clause = units.map { 'name = ? AND level = ?' }.join(' OR ')
values = units.map {|unit| [unit[:name], unit[:level]] }
conditions = [clause, values].flatten
# => ["name = ? AND level = ? OR name = ? AND level = ?", "barbarian", 5, "archer", 6]

现在你可以使用像这样的查询

Unit.where(conditions)

答案 1 :(得分:0)

我们可以尝试通过哈希输入进行查询,如下所示:

{{1}}