Как я могу составить / цепочка запросов в Rails 2? - PullRequest
0 голосов
/ 03 августа 2011

У меня есть один запрос, который получает общее количество строк с одним условием, и второй запрос, который получает общее количество строк с тем же условием плюс другое условие.В идеале я бы не стал повторяться в коде и вместо этого мог бы просто скомпоновать / скомпоновать дополнительное условие для первого запроса.

Я думаю о чем-то подобном.

query1 = Table.find(:all, :conditions => "condition1")
query2 = query1.find(:all, :conditions => "condition2")

Было бы также неплохо узнать, как это выглядит в случае использования Table.count, поскольку именно это я сейчас и пытаюсь сделать.

Я предполагаю, что ActiveRecord ::В Base есть метод, который возвращает объект запроса, а не выполняет его, но я не нашел этого в документации.

1 Ответ

2 голосов
/ 03 августа 2011

Хотя Rails 3 делает это значительно проще, вы всегда можете сделать это в Rails 2 с небольшим взломом, который имитирует это:

# config/initializers/rails2_where_scope.rb
class ActiveRecord::Base
  named_scope :where, lambda { |conditions| {
    :conditions => conditions
  }}
end

Таким образом, вы можете объединить несколько условий в прямом направлениисовместим с Rails 3:

query2 = Table.where(condition1).where(condition2).all

Rails 3 использует AREL для выполнения большинства вычислений SQL, поэтому он гораздо более гибкий, чем Rails 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...