SQL连接ruby on rails

时间:2014-10-14 16:07:43

标签: sql ruby-on-rails ruby ruby-on-rails-4

所以我有两个不同的模型,一个叫做数字,这个结构就像这样

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

和一个叫做用户(我只包括相关部分)

  t.string :phone_number
  t.timestamps

我需要做的是获取短信日期超过2周前且时间小于4且t.string:number的所有数字都不等于users表中的任何t.string:phone_number。我需要做某种sql连接来完成这个吗?

这是我到目前为止所做的:

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

1 个答案:

答案 0 :(得分: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_numbertexted以及times值小于或等于4的所有数字。