簡體   English   中英

將Rails SQL輸出轉換為有效的psql語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM