Ответ 1
Чтобы ответить на ваш вопрос, вы можете:
scope :by_users, lambda {|user_ids|
where(:user_id => user_ids) unless user_ids.empty?
}
Однако
Я обычно использую scope
для простых операций (для удобочитаемости и ремонтопригодности), что-то после этого, и я просто использую методы класса, поэтому что-то вроде:
class Message < ActiveRecord::Base
def self.by_users(users_id)
if user_ids.empty?
scoped
else
where(:user_id => users_id)
end
end
end
Это будет работать в Rails 3, потому что where
фактически возвращает ActiveRecord::Relation
, в котором вы можете связать больше запросов.
Я также использую #scoped
, который вернет анонимную область, которая позволит вам связывать запросы.
В конце концов, это зависит от вас. Я просто даю вам варианты.