Ответ обновлен (дважды) для отражения синтаксиса Rails 3+ ActiveRecord
Rails 3 +
Вы можете использовать следующий синтаксис:
Post.where(user_id: [1,2,3])
И, таким образом:
Post.where(user_id: args)
Rails 3 или Rails 4 (оригинал)
Для полноты синтаксис Rails 3 будет иметь вид:
Post.where("user_id IN (?)", [1,2,3]).to_a
Если аргумент равенArray
, затем:
Post.where("user_id IN (?)", args).to_a
Или, если args - массив строк:
Post.where("user_id IN (?)", args.map(&:to_i)).to_a
to_a
является необязательным, но возвращает результаты в виде массива,Надеюсь, это поможет.
Rails 2
Вы можете просто передать массив в качестве параметра, как показано ниже:
find(:all, :conditions => ["user_id IN (?)", [1,2,3] ] )
Таким образом, если args являетсямассив идентификаторов, вы должны просто позвонить:
find(:all, :conditions => ["user_id IN (?)", args ] )
Если у вас есть проблемы с типами, вы можете сделать:
find(:all, :conditions => ["user_id IN (?)", args.map { |v| v.to_i } ] )
, и это будет гарантировать, что каждый элемент в массивецелое число.