10
Basit bir modelRails içinde AREL'de alt sorgularda birleştirme nasıl yapılır
class User
has_many :logs
class Logs
'ım var, normalde yabancı anahtar logs.user_id aracılığıyla. Arel kullanarak aşağıdakileri yapmaya çalışıyorum ve Arel doktora göre çalışmalı.
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]))
Bunu yaptığımda
TypeError: Cannot visit Arel::SelectManager
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]))
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]))
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]))
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]))
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]))
Lütfen aynı sorguyu ham sql, başka bir tür Arel sorgusu ile nasıl elde edebileceğime ilişkin cevap yazmayın. Bu sorgunun belirli sonuçlarıyla ilgilenmediğim kalıptır.
'l_t [: id] .eq (sayım [: user_id]) 'Bu işe yarıyor mu? Demek istediğim, neden bir günlüğün kimliği kullanıcının kimliğine eşit olsun? –