これまでprintデバッグプログラマだったが、さすがに辛いということでPythonのipdbみたいのないかなってぐぐってみたらあった。
あったけど、どうせControllerのデバッグとかめんどいでしょ?とか思ったんだけど、RSpecで試したらちゃんと停止した!!!!!?
覚えた
TableAのvalueをidごとに集計するんだけど、①全集計と②とある条件で集計した結果をidごとに紐付けて差分とる。というようなSQLを書きたかった
こちら参考
table_a_all_sum = TableA.group(:id).select('id', 'sum(value) AS sum_value') table_a_con_sum = TableA.where("条件").group(:id).select('id', 'sum(value) AS con_sum_value')
ここまではおk
で、記事を参考にしたところ、サブクエリは joins
にも食わすことができるとのことなのでこうした
TableA.joins("inner join (#{table_a_all_sum.to_sql}) table_a_all_sum on table_a.id = table_a_all_sum.id", "inner join (#{table_a_con_sum.to_sql}) table_a_con_sum on table_a.id = table_a_con_sum.id")
そしたら無事できた。あとは引くだけ
"↑の続きで".select('table_a_all_sum.sum_value - table_a_con_sum.con_sum_value AS sub_value')
_人人人人人人人人_ > 暴れん坊将軍 <  ̄Y^Y^Y^Y^Y^Y^Y^Y^ ̄
エピソード(抜粋)
(確認しなかった僕も悪いが)これじゃわからん
あと大人だけで乗って思ったのが、ジェットコースターとか明らかに乗れないのはわかるものの、子供向けのコンテンツでもアトラクションは思いの外ガシャンガシャン動くので、乗ったあと「たしかにな」って思った
user:bookは 1:N とする
user側はhas_many
になるが、book側はbelongs_to
になる。
belongs_to :user, foreign_key: 'user_id'
aliasに変更したい場合は、こう
belongs_to :borrow_user, class_name: 'User', foreign_key: 'user_id'
class_name
にターゲットのモデル名を渡してあげたらおk
注意点として、aliasをつけたので、 find
とか使う先に指定する名前はaliasを指定する必要があります
Railsと同じかしら?と思ってましたが、違ってたのでハマりました。ドキュメント読みましょう(戒め)
色々書き方はありそうですが、僕はこうしました。
borrow_user { association :user }
$ docker run --rm --platform linux/arm64/v8 -it ubuntu:latest /bin/bash $ apt update -y && \ apt install -y gcc python3 nodejs npm curl git build-essential $ cd ~ $ curl -L -o bazel https://github.com/bazelbuild/bazelisk/releases/download/v1.15.0/bazelisk-linux-arm64 $ chmod +x bazel $ mv bazel /usr/local/bin/ $ git clone https://github.com/emscripten-core/emsdk.git $ cd emsdk $ ./emsdk install 3.1.7 $ ./emsdk activate 3.1.7 $ git clone https://github.com/s0l0ist/bazel-emscripten.git $ cd bazel-emscripten/ $ npm run build $ git clone https://github.com/tensorflow/tfjs.git $ cd tfjs/tfjs-backend-wasm/ $ npm install -g yarn $ yarn install $ yarn build
EC2(Intel)立ち上げて、docker上で試しているけどビルドがずっと走っているうれしい(↑は夜なべしたから悲しい)