0

我有一个看起来像这样的公司模型

class Company < ActiveRecord::Base
  has_many :values
end

然后价值模型看起来像这样

class Value < ActiveRecord::Base
  belongs_to :company
  default_scope order: 'created_at ASC'
end

我想为公司创建一个默认排序顺序,以便根据最新值对它们进行排序。拥有最新价值观的公司应该是第一位的。像这样的东西:

default_scope order: 'companies.values.last.created_at DESC'

但是当我把它放在我的公司模型中时,我得到了这个错误:

SQLite3::SQLException: near "values": syntax error: SELECT  "companies".* FROM "companies"  WHERE "companies"."id" = ? ORDER BY companies.values.last.calculated_at DESC LIMIT 1
4

1 回答 1

0

在 belongs_to :company 关联中包含 touch: true 。每当添加值时,这将更新关联公司的 updated_at 列。现在您可以对 updated_at 列进行排序。

class Value < ActiveRecord::Base
  belongs_to :company, touch: true
end

class Company < ActiveRecord::Base
 has_many :values
 default_scope order: 'updated_at DESC'
end
于 2013-04-27T20:08:09.943 回答