1

モデルにデフォルトのスコープを追加しようとしていますが、最初にある属性で昇順に並べ替え、次に別のモデルの委任された属性で昇順に並べ替える必要があります。

私はこれまでのところこれを持っています:

  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 に答える