2016-04-05 9 views
0

を注文するには、2つのデータベース列を組み合わせlast_nameなどなど、今、私が解決したい問題は、私は(組み合わせることで、ユーザーと順番にそれらを取得したいということですfirst_name + last_name)を組み合わせた。私はしばらくそれについて考えましたが、真剣に、私はそれについて遠慮なく手がかりを持っていません。おかげでMySQLの私は<code>id</code>のように複数の属性を持っているRailsのモデル<code>User</code>、<code>first_name</code>を、持っているデータ

答えて

2

は:

User.order('CONCAT(`first_name`, `last_name`)') 
+0

完璧な答えに動作します –

0

のRails:

User.order(["first_name desc", "last_name desc"]) 

'.ORDER' をパラメータとして文字列または配列のいずれかをとります。複数の列と方向を組み合わせることができます。

0

論理的には、ソートするためにデータを結合/連結する必要はありません。優先順位の問題として、プライマリソートフィールドは、プライマリソートのコンテキスト内でコンテキストとスコープを2番目のソートに設定します。最初のソート列を選択し、次のソート列をサブセットとして選択するなどです。たとえば:

  (Sort col 1) (Sort col 2) 
Rec ID 22 Adam   Adam 
Rec ID 10 Apple   Aaron 
Rec ID 01 Apple   Volar 
Rec ID 78 Cal   Adam 
Rec ID 42 Cal   Volar 
Rec ID 19 Cookie  Zeta 

したがって、このようなものは、組み合わせ2 COLため

User model { 
    scope :order_by_full_name, -> { order("first_name ASC", "last_name ASC") } 
{ 

Controller { 
    @sorted = User.order_by_full_name 
} 
関連する問題