我有2个型号:
Subscriber
- id
- name:string
- email:string
Submission
- id
- name:string
- email:string
- path:string
- ip:string
他们没有任何关系。
我想从订阅者中选择所有行,并排除在提交表中插入电子邮件地址的行,其中url等于'some / path'。
使用Rails完成此任务的最优雅方法是什么?
答案 0 :(得分:1)
我真的不明白你的意思: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])
我没有测试它,但它应该是这些方面的东西。