Дизъюнкция в ActiveRecord - PullRequest
       7

Дизъюнкция в ActiveRecord

2 голосов
/ 09 июня 2010

Можно ли использовать ActiveRecord named_scope s для создания одного запроса с предложениями sql OR?

Когда я использую

Model.scope1.scope2

, сгенерированный запрос является соединением этих областей.

1 Ответ

0 голосов
/ 09 июня 2010

Это не совсем то, для чего были созданы именованные области, но вы могли бы использовать их с дополнительным кодом, чтобы получить то, что вам нужно.

def combine_scopes(model)
  (model.scope1 + model.scope2).uniq
end

или разрешить объединение любых областей действия

def combine_scopes(model, scope1, scope2)
  (model.send(scope1) + model.send(scope2)).uniq
end

Вы можете даже изменить это, чтобы разрешить любое количество областей, используя * args

...