[英]Rails - how to convert output of find_by_sql (array) to an ActiveRecord relation?
[英]Convert Rails SQL output to valid psql statements
活动作业在将作业放入队列时会创建以下SQL。
INSERT INTO "delayed_jobs" ("queue", "handler", "run_at", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["queue", "mailers"], ["handler", "--- !ruby/object:ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper\njob_data:\n job_class: ActionMailer::DeliveryJob\n job_id: 189ce295-1da8-47f5-9933-1b5657554731\n queue_name: mailers\n arguments:\n - UserMailer\n - register_success\n - deliver_now\n - _aj_globalid: gid://hub/User/1\n - _aj_globalid: gid://hub/Order/294\n - token: 561e6309deb2b9.72817606\n number: 123\n expiration: '2025-10-14'\n"], ["run_at", "2015-10-14 14:13:30.140078"], ["created_at", "2015-10-14 14:13:30.140408"], ["updated_at", "2015-10-14 14:13:30.140408"]]
我将如何修改它以用作原始SQL查询? 我以为Rails输出应该是有效的sql,但出现错误
错误:“ [” LINE 1:... at“或附近的语法错误)值($ 1,$ 2,$ 3,$ 4,$ 5)返回” id“ [[” queue“,...
它正在使用占位符。 因此您需要将$ x替换为以下值
INSERT INTO "delayed_jobs" ("queue", "handler", "run_at", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["queue", "mailers"], ["handler", "--- !ruby/object:ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper\njob_data:\n job_class: ActionMailer::DeliveryJob\n job_id: 189ce295-1da8-47f5-9933-1b5657554731\n queue_name: mailers\n arguments:\n - UserMailer\n - register_success\n - deliver_now\n - _aj_globalid: gid://hub/User/1\n - _aj_globalid: gid://hub/Order/294\n - token: 561e6309deb2b9.72817606\n number: 123\n expiration: '2025-10-14'\n"], ["run_at", "2015-10-14 14:13:30.140078"], ["created_at", "2015-10-14 14:13:30.140408"], ["updated_at", "2015-10-14 14:13:30.140408"]]
会成为
INSERT INTO "delayed_jobs" ("queue", "handler", "run_at", "created_at", "updated_at")
VALUES (
'mailers',
'--- !ruby/object:ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper\njob_data:\n job_class: ActionMailer::DeliveryJob\n job_id: 189ce295-1da8-47f5-9933-1b5657554731\n queue_name: mailers\n arguments:\n - UserMailer\n - register_success\n - deliver_now\n - _aj_globalid: gid://hub/User/1\n - _aj_globalid: gid://hub/Order/294\n - token: 561e6309deb2b9.72817606\n number: 123\n expiration: '2025-10-14'\n',
'2015-10-14 14:13:30.140078',
'2015-10-14 14:13:30.140408',
'2015-10-14 14:13:30.140408'
) RETURNING "id"
如果您有权访问生成该数据库调用的ActiveRecord
对象,则可以使用to_sql
方法获取SQL查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.