10
私はシンプルなモデルRails内のARELでサブクエリの結合を行う方法
class User
has_many :logs
class Logs
を通常の方法で外部キーlogs.user_idに関連させています。私はArelを使って次のことをやろうとしており、Arelの文書によればうまくいくはずです。
u_t = Arel::Table::new :users
l_t = Arel::Table::new :logs
counts = l_t.
group(l_t[:user_id]).
project(
l_t[:user_id].as("user_id"),
l_t[:user_id].count.as("count_all")
)
l_t.joins(counts).on(l_t[:id].eq(counts[:user_id]))
私はエラーが発生します。
TypeError: Cannot visit Arel::SelectManager
しかし、Arel explicitly suggestsの作者Arelはこの種のことを行うことができます。
Raw SQLと同じクエリ、Arelクエリの別のタイプなどをどのように達成できるかについての回答は書かないでください。このクエリの特定の結果ではなく、私が興味を持っているパターンです。
'l_tの[: id] .eq(counts [:user_id]) 'これは機能しますか?つまり、なぜログのIDをユーザーのIDと同じにするべきですか? –