在迁移到Heroku的过程中,我有一个奇怪的错误,只有当我使用PostgreSQL(在MySQL工作正常)PostgreSQL的导轨的has_many:通过/ collection_singular_ids /:顺序问题
当我执行@user.county_ids
我得到以下错误:
ActiveRecord::StatementInvalid: PGError: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 1: ...id" WHERE ("activity_areas".user_id = 1) ORDER BY counties.n...
生成的SQL请求是:
SELECT DISTINCT "activity_areas".county_id FROM "activity_areas" INNER JOIN "counties" ON "counties"."id" = "activity_areas"."county_id" WHERE ("activity_areas".user_id = 1) ORDER BY counties.name ASC
终于型号:
class User < ActiveRecord::Base
has_many :activity_areas
has_many :counties, :through => :activity_areas
end
class ActivityArea < ActiveRecord::Base
belongs_to :user
belongs_to :county
default_scope joins(:county).order("counties.name ASC")
end
class County < ActiveRecord::Base
has_many :activity_areas
has_many :users, :through => :activity_areas
default_scope :order => 'name ASC'
end
关于如何解决此问题的任何想法? 谢谢,
德克斯特一个SQL,它不工作。这里是错误:“ActiveRecord :: StatementInvalid:PGError:ERROR:在DISTINCT处或附近出现语法错误”第1行:SELECT COUNTY.NAME,DISTINCT“activity_areas”.county_id FR ...。生成的sql是“SELECT COUNTY.NAME,DISTINCT”activity_areas“.county_id FROM”activity_areas“INNER JOIN”COUNTY“ON”COUNTY“。”ID“=”activity_areas“。”county_id“WHERE(”activity_areas“.user_id = 1 )ORDER BY counties.name ASC' – Dorian