Каков наилучший способ вызвать хранимую функцию Postgres в Rails? - PullRequest
5 голосов
/ 17 октября 2019

Я создал функцию в Postgres, которую я хотел бы вызвать из моего кода Rails. Каков наилучший способ сделать это? Есть ли метод ActiveRecord, который я могу использовать? Или мне нужно использовать SQL, как в Arel.sql?

1 Ответ

2 голосов
/ 17 октября 2019

В ActiveRecord нет специального метода, вам нужно использовать SQL. Вы можете просто сделать что-то вроде

Post.connection.execute("select version();").first 
=> {"version"=>"PostgreSQL 10.5 on x86_64-apple-darwin17.7.0, compiled by Apple LLVM version 9.1.0 (clang-902.0.39.2), 64-bit"}

. Это вернет хеш для строки, где ключами являются имена столбцов, а значения - соответствующие значения. Так что для этого конкретного примера я знаю, что он вернет только одну строку, поэтому я делаю first, чтобы сразу получить первую строку. Если вы просто хотите немедленно получить версию, вы также можете написать

version = Post.connection.execute("select version();").first.values.first 
=> "PostgreSQL 10.5 on x86_64-apple-darwin17.7.0, compiled by Apple LLVM version 9.1.0 (clang-902.0.39.2), 64-bit"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...