1

我在数据库中有 2 个表:汽车和域。一辆车可以有很多域,一个域可以有很多车。

在我的项目中,三个模型:

class Car < ActiveRecord::Base

  has_many :cars_domains
  has_many :domains, :through => :cars_domains

...

class Domain < ActiveRecord::Base

    has_many :cars_domains
    has_many :cars, :through => :cars_domains
...

class CarsDomain < ActiveRecord::Base
  belongs_to :car
  belongs_to :domain
end

我想看看没有域名的汽车:

@cars = Car.find(:all, :conditions => ['id not in(select car_id from cars_domains where domain_id = ?)', params[:domain_id]])

这是工作,但我认为这非常困难。也许可以做得更简单?

4

1 回答 1

1

在我创建的一个快速应用程序中尝试了这个:

domain = Domain.find(params[:domain_id])
Car.includes(:cars_domain).where('cars_domain.domain_id <> ?', domain.id)

我查询域对象的原因是因为我总是厌倦将请求标头中的值作为 SQL 中的查询参数传递。

于 2012-08-29T14:35:01.737 回答