Rails默认范围订购

时间:2014-01-11 17:54:15

标签: ruby-on-rails model scope default-scope

我正在尝试将默认范围添加到我需要的模型中,首先按一个属性排序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不存在(这是真的,因为它不在该模型上)但是它被委派了。

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

您需要在关联的表格上执行joins才能按顺序排序。我没有测试过这个,但是有点像:

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

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