2014-10-14 8 views
0

Так я две различные модели одна называется число, которое структурировано как этогоSQL присоединиться рубин на рельсах

t.string :number 
t.date :texted 
t.integer :times 
t.timestamps 

и один называется пользователей (я только включил соответствующую часть)

t.string :phone_number 
    t.timestamps 

Я нужно сделать, это захватить все числа, что текстовая дата больше, чем 2 недели назад, а время меньше 4 и что t.string: число не равно любому t.string: phone_number в таблице users. Нужно ли мне делать что-то вроде sql-соединения для этого?

Это то, что я до сих пор:

numbers = Onumber.where("texted <= ? AND times<=4",2.week.ago.utc) 

ответ

1

да left join был бы более подходящим здесь:

Onumber.joins(
    'left join users on onumbers.number = users.phone_number' 
).where(
    'users.phone_number is null and onumber.times <= 4 and onumber.texted < ?', 2.weeks.ago.utc 
) 

Это даст вам все номера не users.phone_number, texted с times значением меньше или равно 4.

+0

Это прекрасно работает! – Tyler

Смежные вопросы