こういうSQLを得たい。
select * from posts where user_id = ? AND posted_at > ? OR user_id = ? AND posted_at > ?
とりあえずやってみた。
Postクラスがあるとする。 以下のカラムをもつ。
- user_id
- posted_at
class Post < ActiverecordBase # user_id # posted_at end
# Array<posted_at, user_id> condition_pairs = [[today, 1], [tomorrow, 2]] conditions = Array.new(condition_pairs.size) { "user_id = ? AND posted_at > ?" }.join(" OR ")
contidisonsの結果
# => "user_id = ? AND posted_at > ? OR user_id = ? AND posted_at > ?"
sqlを作る。
Post.where(conditions, condition_pairs.flatten)
結果
select * from posts where user_id = ? AND posted_at > ? OR user_id = ? AND posted_at > ?
蛇足
括弧いるんじゃないか。