-1

我有 2 个模型:

Subscriber
  - id
  - name:string
  - email:string

Submission
  - id
  - name:string
  - email:string
  - path:string
  - ip:string

他们没有任何关系。

我想从订阅者中选择所有行,并排除在提交表中插入电子邮件地址的行,其中 url 等于“某些/路径”。

使用 Rails 完成此任务的最优雅方法是什么?

4

1 回答 1

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])

我没有测试它,但它应该是这样的。

于 2012-04-23T13:05:40.983 回答