Как я могу рефакторинг после запроса activerecord в запрос SQL - PullRequest
0 голосов
/ 06 февраля 2019

Как мне выполнить рефакторинг под запросом ActiveRecord в запрос SQL?

where(home_team: Team.search(params, %i[name])).
  or(where(guest_team: Team.search(params, %i[name])))`

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Вы можете рассмотреть возможность использования Arel.

where(
  %i[home_team guest_team]
    .map { |field| <YourClassModel>.arel_table[field]].in(Team.search(params, %i[name])) }
    .inject(:or)

<YourClassModel>.arel_table этот материал должен быть перемещен в другую функцию, если вы хотите придумать мое предложение.

Другой способ - использовать Merge и попробуйте разбить Team.search на область модели и объединить их с вашим запросом where.

0 голосов
/ 06 февраля 2019

Вы можете использовать следующее,

value = Team.search(params, %i[name])
Klass.where('home_team = ? OR guest_team = ?', value, value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...