1

我正在尝试将默认范围添加到我需要它的模型中,以首先按一个属性对 asc 进行排序,然后按另一个模型上的委托属性对升序进行排序。

到目前为止我有这个:

  delegate :name, :location_1, :location_2, :location_3, :location_4,
    to: :park,
    allow_nil: true,
    prefix: true

  default_scope order('coaster_sort ASC').order('park_name ASC')

我不断收到一条错误消息,指出 park_name 不存在(这是真的,因为它不在该模型上),但它已被委托。

有想法该怎么解决这个吗?

4

1 回答 1

1

您需要joins在关联表上进行操作才能对其进行排序。我没有对此进行测试,但类似:

default_scope joins(:other_model).order('coaster_sort ASC').order('<other_model>.park_name ASC')

我还没有测试过上面的代码,但是我之前已经做过了……order可能需要针对您的代码调整符号。

于 2014-01-11T17:57:17.680 回答