所以我有两个不同的模型,一个叫做数字,这个结构就像这样
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)
答案 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_number
,texted
以及times
值小于或等于4的所有数字。