Изменение Rails Query на Pure SQL - PullRequest
0 голосов
/ 29 августа 2010

Я хочу переместить следующий код из ActiveRecord в чистый SQL для повышения производительности.Как лучше написать этот запрос на чистом SQL (MySQL DB)?

User.count(:conditions => ["email = ?",params[:email]]) > 0

Спасибо

1 Ответ

3 голосов
/ 29 августа 2010

Аналогично find_by_sql вы можете использовать count_by_sql :

User.count_by_sql(["SELECT COUNT(*) FROM users u WHERE u.email = ?", params[:email]]) > 0

Не забудьте также использовать здесь синтаксис ["... ? ...", var] для защиты от SQL-инъекций.

Однако я сомневаюсь, что благодаря этому вы сможете добиться значительного улучшения производительности.Попробуй это.Если это не быстрее, оставайтесь с версией ActiveRecord или попробуйте найти более изящное решение вашей проблемы.

Редактировать:

Если вы просто хотите проверить, содержится ли данное письмо вВ таблице вы также можете проверить производительность User.find_by_email(params[:email]).present?

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