rails 4如何同时使用where where和where条件

时间:2013-11-23 19:44:48

标签: ruby-on-rails activerecord ruby-on-rails-4

我有以下查询

model = (1,2,3,4)
@posts = Post.where(category_id: id,  product_model_id: model)

我的上述查询只是从模型中获取1如何在此处使用where in条件

修改-1

这段代码有效,但我觉得这不是一个好的代码吗?

@posts = Post.where("category_id = ? and product_model_id in (#{model})", id)

修改-2

如果我使用

@posts = Post.where(“category_id =?and product_model_id in(?)”,id,model)

投掷错误

invalid input syntax for integer: "15,16"因为我的输入是这样的

select * from posts where category_id=5 and product_model_id in ('15,16')

如何纠正呢......

3 个答案:

答案 0 :(得分:25)

model_ids = model.split(",").map(&:to_i)
@posts = Post.where(category_id: id, product_model_id: model_ids)</code>

model_ids = model.split(",").map(&:to_i)
@posts = Post.where("category_id = ? AND product_model_id IN (?)", id, model_ids)

答案 1 :(得分:18)

根据rails指南,您可以将数组传递给where,并且应该了解您要使用IN。请参阅此处的指南:http://guides.rubyonrails.org/active_record_querying.html#subset-conditions

我对你的语法感到有点困惑,因为model = (1, 2, 3, 4)看起来不像有效的数组语法。

指南的相关部分:

Client.where(orders_count: [1,3,5])

答案 2 :(得分:2)

你可以使用arel,但我会做类似的事情:

@posts = Post.where("category_id = ? AND product_model_id IN (?)", id, model)