1

我有 2 个模型:PassportVisa 和 Country。

国家模式

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

护照签证模型

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

我正在尝试像这样查询护照签证模型:

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

但它说:

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

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

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

4

1 回答 1

2

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

如果你想订购国家名称,你可以这样做

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

我添加了.uniq因为使用外部连接你可能有重复

于 2013-05-22T18:49:03.833 回答