1

PassportVisa と Country の 2 つのモデルがあります。

国別モデル

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

そして、私はそのようにpassportvisaモデルを照会しようとしています:

@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 に答える