Rails 3: включение функции SQL в запрос - PullRequest
4 голосов
/ 22 января 2011

MyModel.select('a, b, c').all

Возвращает из базы данных следующее:

+---+---+---+
| a | b | c |  
+---+---+---+
| 1 | 2 | 3 |
| 4 | 5 | 6 |
| 7 | 8 | 9 |
+---+---+---+

Вопрос: Как бы я включил четвертый столбец с результатом функции SQL?

т.е.

+---+---+---+---------------------+
| a | b | c | MYFUNCTION(a, b, c) |
+---+---+---+---------------------+
| 1 | 2 | 3 | 123                 |
| 4 | 5 | 6 | 456                 |
| 7 | 8 | 9 | 789                 |
+---+---+---+---------------------+

Следующее не сработало:

MyModel.select('a, b, c, MYFUNCTION(a, b, c)').all

хотя, если я использую AS для присвоения столбцу имени действительного атрибута модели, это работает:

MyModel.select('a, b, MYFUNCTION(a, b, b) AS c').all

+---+---+-----+
| a | b |  c  |
+---+---+-----+
| 1 | 2 | 122 |
| 4 | 5 | 455 |
| 7 | 8 | 788 |
+---+---+-----+

Я бы предпочел решить эту проблему в контексте модели, а не возвращаться к необработанному SQL, поскольку мне также необходимо использовать области действия.

Любые предложения приветствуются.

1 Ответ

2 голосов
/ 22 января 2011

Вы можете присвоить любое произвольное имя столбцу AS вместо существующего атрибута.

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