Rails 4 has_many through和order scope

时间:2013-11-05 17:14:21

标签: ruby-on-rails

我有这个型号:

class User < ActiveRecord::Base
  has_many :customers, -> { order('customers.name ASC') }
  has_many :stores, -> { order('company_stores.id ASC').uniq }, through: :customers
end

当我尝试

user.stores

我有这个错误:

PG::InvalidColumnReference: ERROR:  for SELECT DISTINCT, ORDER BY expressions must appear in select list

因为Rails执行SELECT DISTINCT of company_stores.*,但在ORDER BY中也会显示customers.name

我应该放弃协会的命令吗?

1 个答案:

答案 0 :(得分:7)

正如错误消息所示,PG要求订单表达式包含在select中,因此select('stores.*, company_stores.id').order('company_stores.id ASC').uniq或类似的应该可以解决问题。