Rails'包含'和'where'与belongs_to关联

时间:2013-05-22 18:29:37

标签: ruby-on-rails ruby-on-rails-3 activerecord

我有两个模型:PassportVisa和Country。

国家/地区模型

class Country < ActiveRecord::Base
  attr_accessible :iso, :name
  has_many :passport_visa, foreign_key: :country_id
end

PassportVisa模型

class PassportVisa < ActiveRecord::Base
  belongs_to :country, foreign_key: :country_id
end

我正试图像这样查询passportvisa模型:

@passport_visa_supplement_o   = PassportVisa.includes(:assets).where(:visa_type => 'Official' ,:assets => {:pdf_type => 'supplement'}).order("country ASC")

但它说:

  

PG ::错误:错误:列“国家/地区”不存在

这是因为在我的PassportVisa表上我只能访问country_id。使用相同的查询(进行一些调整)如何自动获取国家/地区名称?

  

:资产来自我用于上传的另一个模型,它应该留在那里。

1 个答案:

答案 0 :(得分:3)

您没有在联接中包含国家/地区表。

如果您想订购国家/地区名称,您可以这样做

@passport_visa_supplement_o = PassportVisa.includes([:assets, :country]).uniq.where(:visa_type => 'Official' ,:assets => {:pdf_type => 'supplement'}).order("countries.name ASC")

我添加了.uniq,因为外部联接可能有重复