Rails 3 ActiveRecord: UNION - PullRequest
       9

Rails 3 ActiveRecord: UNION

8 голосов
/ 07 апреля 2011

Есть ли способ использовать MySQL UNION в Rails 3?

Ответы [ 4 ]

10 голосов
/ 07 апреля 2011

Я думаю, что единственный способ заставить это работать, непосредственно выполнив запрос.

ActiveRecord::Base.connection.execute("SELECT REPEAT('a',1) UNION SELECT REPEAT('b',10)")

Возвращает набор результатов ActiveRecord. Если вы хотите, чтобы результаты обернулись в модели, сделайте что-то вроде этого:

MyModel.find_by_sql("...")
5 голосов
/ 01 декабря 2012

Я нашел аккуратный взлом, используя select. Например, если вы хотите создать союз между User и OtherUser.

User.select('id from other_users union select id')

это сгенерирует этот SQL

"SELECT id from other_users union select id FROM users " 
3 голосов
/ 07 апреля 2011
Model.find_by_sql("your union query")
0 голосов
/ 07 сентября 2012

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

https://github.com/rails/arel/pull/118

Тем временем я написал небольшой хак, с помощью которого вы сможете создавать простые запросы на объединение и выполнять несколько фильтров с помощью DISTINCT, ORDER BY и LIMIT:

http://coderwall.com/p/9hohaa

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