我有两个模型: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。使用相同的查询(进行一些调整)如何自动获取国家/地区名称?
:资产来自我用于上传的另一个模型,它应该留在那里。
答案 0 :(得分:3)
您没有在联接中包含国家/地区表。
如果您想订购国家/地区名称,您可以这样做
@passport_visa_supplement_o = PassportVisa.includes([:assets, :country]).uniq.where(:visa_type => 'Official' ,:assets => {:pdf_type => 'supplement'}).order("countries.name ASC")
我添加了.uniq
,因为外部联接可能有重复