Я пытаюсь выяснить, как rails преобразует хэш , например (Это пример, пожалуйста, не принимайте это буквально, я выбрал что-то вместе, чтобы получить концепцию, я знаю этот запрос такая же, как User.find (1)):rails 2.3 конвертировать хэш в mysql-запрос
{
:select => "users.*",
:conditions => "users.id = 1",
:order => "username"
}
в:. выбрать пользователей * FROM пользователей, где users.id = 1 ORDER BY имя пользователя
ближайший вещь, которую я могу найти ActiveRecord: : База # find_every
def find_every(options)
begin
case from = options[:from]
when Symbol
instantiate_collection(get(from, options[:params]))
when String
path = "#{from}#{query_string(options[:params])}"
instantiate_collection(format.decode(connection.get(path, headers).body) || [])
else
prefix_options, query_options = split_options(options[:params])
path = collection_path(prefix_options, query_options)
instantiate_collection((format.decode(connection.get(path, headers).body) || []), prefix_options)
end
rescue ActiveResource::ResourceNotFound
# Swallowing ResourceNotFound exceptions and return nil - as per
# ActiveRecord.
nil
end
end
Я не уверен, как изменить это, чтобы просто вернуть то, что было бы необработанным оператором mysql.
Почему вы хотите использовать хэш здесь? Ваш запрос будет просто 'User.find (1)' в Rails. Btw. используя порядок, когда результат будет одним конкретным элементом, не имеет смысла. – spickermann
Это правда, но это не касается проблемы, которая у меня есть. Я использую paginate, и недавно мне пришлось использовать ключевое слово HAVING. К сожалению, мои сгруппированные результаты указываются в select, который уничтожается will_paginate. Однако, если я могу заставить это работать, я могу вызвать paginate_by_sql, который будет обертывать запрос и возвращать правильный подсчитанный результат. – Camway