0

Rails 3でユーザーアカウントを収集する簡単な検索があります。

 Account.where(:user_id => @user)

アカウント モデルには、「デフォルト」のブール フィールドがあります。ユーザーが多くのアカウントを追加すると、デフォルトのアカウントが常にループの最初になるようにしたいと思います。ブール値フィールドでは順序が機能しないようです。

  Account.where(:user_id => @user, :order => "default DESC")

これを処理するためにクエリを注文する方法はありますか、それともクエリを分割して別の検索でデフォルトのアカウントを見つける必要がありますか?

4

1 に答える 1

4

試してみてください-句Account.where(:user_id => @user).order("default DESC")を入れても結果セットはソートされません。:orderwhere()

ただし、よりクリーンな解決策は、スコープを追加することです。

scope :default_first, order(arel_table[:default].desc) 

次に、次のように呼び出すことができます (リレーションが適切に設定されていると仮定します):

@user.accounts.default_first.all
于 2012-09-08T21:33:48.337 に答える