我有 2 个模型:
Subscriber
- id
- name:string
- email:string
Submission
- id
- name:string
- email:string
- path:string
- ip:string
他们没有任何关系。
我想从订阅者中选择所有行,并排除在提交表中插入电子邮件地址的行,其中 url 等于“某些/路径”。
使用 Rails 完成此任务的最优雅方法是什么?
我有 2 个模型:
Subscriber
- id
- name:string
- email:string
Submission
- id
- name:string
- email:string
- path:string
- ip:string
他们没有任何关系。
我想从订阅者中选择所有行,并排除在提交表中插入电子邮件地址的行,其中 url 等于“某些/路径”。
使用 Rails 完成此任务的最优雅方法是什么?
我真的不明白你的意思:url等于'some/path'但我想你可以把它作为一个额外的条件添加......
如果你用一个普通的嵌套查询来解决它,你会得到:
SELECT *
FROM subscribers
WHERE email NOT IN (Select email FROM Submission)
所以在活动记录中,这将是:
subscribers.all(:conditions => ["email NOT IN (SELECT email from Submission)"])
如果您不喜欢编写嵌套选择查询,您也可以这样做:
emails = Submission.all
subscribers.all(:conditions => ["email not in (?)", emails])
我没有测试它,但它应该是这样的。