2012-06-19 20 views
6

Dinamik SQL sorgusu:Yakut - Benim denetleyicileri birinde şu ham sql sorgusu yürütme am

active_users_query = <<-SQL 
     SELECT count(DISTINCT patients.id) 
     FROM public.patients, public.subscriptions, public.users, public.calendar_days 
     WHERE patients.user_id = users.id 
     AND patients.id = calendar_days.patient_id 
     AND subscriptions.user_id = patients.user_id 
     AND (date_trunc('day',patients.last_sync) > current_date - interval '30 days' 
     OR date_trunc('day', calendar_days.created_at) > current_date - interval '30 days' 
     OR date_trunc('day',users.current_sign_in_at) > current_date - interval '30 days') 
     AND subscriptions.code_id = 2 
SQL 

Bu sorgunun son satırına bazı RoR kod ekleyebilirsiniz bir yolu var oluşturmak için mi code_id dinamik olarak mı? Böyle

şey:

AND subscriptions.code_id = '@subscription.code' 

cevap

10

Bir cazibe gibi çalıştı heredoc dizeleri

active_users_query = <<-SQL 
     SELECT count(DISTINCT patients.id) 
     FROM public.patients, public.subscriptions, public.users, public.calendar_days 
     WHERE patients.user_id = users.id 
     AND patients.id = calendar_days.patient_id 
     AND subscriptions.user_id = patients.user_id 
     AND (date_trunc('day',patients.last_sync) > current_date - interval '30 days' 
     OR date_trunc('day', calendar_days.created_at) > current_date - interval '30 days' 
     OR date_trunc('day',users.current_sign_in_at) > current_date - interval '30 days') 
     AND subscriptions.code_id = '#{@subscription.code}' 
SQL 
+0

yılında Yakut değişkenleri enterpolasyon yapabilmektedir. Teşekkürler !! – Myxtic