PostgreSQLデータベースにクエリを実行しようとすると、以下のエラーが発生します。pgAdminでテーブルとすべての列を表示でき、select *を実行することもできるので、テーブルと列が存在することがわかります。これに関するどんな助けも大いに感謝されるでしょう。
これが私が得ているエラーです:
PG::Error: ERROR: column "fi_ase" does not exist
問題のテーブルのスキーマは次のとおりです。Rails3.2アプリの一部として移行して生成されました。
create_table "certificates", :force => true do |t|
t.integer "profile_id"
t.boolean "FI_ASE"
t.boolean "FI_AME"
t.boolean "FI_INSTA"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.boolean "C_ASEL"
t.boolean "C_AMEL"
t.boolean "C_ASES"
t.boolean "C_AMES"
t.boolean "ATP_ASEL"
t.boolean "ATP_AMEL"
t.boolean "ATP_ASES"
t.boolean "ATP_AMES"
t.boolean "GI_Basic"
t.boolean "GI_Advanced"
t.boolean "GI_Instrument"
end
Railsでの私のクエリ/メソッドは次のとおりです。
def self.search(city, state, zip, *certs)
query_obj = joins(:profile => [:addresses, :certificate])
query_obj = query_obj.where("city like ?", "%#{city}%") unless city.blank?
query_obj = query_obj.where("state = ?", state) unless state.blank?
query_obj = query_obj.where("zip like ?", "%#{zip}%") unless zip.blank?
query_obj = query_obj.where("FI_ASE = ?", true) unless certs[0].blank?
query_obj
end
次のSQLステートメントをpgAminSQLエディターで直接実行すると、同じエラーが発生します。
select *
from contacts c
inner join profiles p on c.id = p.contact_id
inner join addresses a on p.id = a.profile_id
inner join certificates ct on p.id = ct.profile_id
where ct.FI_ASE = true