Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从其他表中排除行_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 从其他表中排除行

Ruby on rails 从其他表中排除行,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有两种型号: Subscriber - id - name:string - email:string Submission - id - name:string - email:string - path:string - ip:string 他们没有任何关系 我想从订阅服务器中选择所有行,并排除url等于“some/path”的提交表中插入电子邮件地址的行 用Rails实现这一点最优雅的方法是什么?我真的不明白你的意思:url等于'some/path'

我有两种型号:

Subscriber
  - id
  - name:string
  - email:string

Submission
  - id
  - name:string
  - email:string
  - path:string
  - ip:string
他们没有任何关系

我想从订阅服务器中选择所有行,并排除url等于“some/path”的提交表中插入电子邮件地址的行


用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)"])
如果不想编写嵌套的select查询,还可以执行以下操作:

 emails = Submission.all
 subscribers.all(:conditions => ["email not in (?)", emails])
我没有测试,但应该是这样的