web-dev-qa-db-ja.com

昇順で並べ替えRails

こんにちは私はこのモデルを持っています

モデルアイテム

class Inventory::Item < ActiveRecord::Base
  has_many :types, :class_name => "ItemType"
  attr_accessible :name
end

モデルitem_type

class Inventory::ItemType < ActiveRecord::Base
  belongs_to :item 
  attr_accessible :number
end

次に、コントローラーで、タイプ(クラスItemTypeを持つ)をアイテム名に基づいて昇順でソートしたいとしましょう。それ、どうやったら出来るの?

例えば、

  • ItemType番号= 1の項目名=テーブル
  • ItemType番号= 2の項目名= Chair
  • ItemType番号= 3の項目名=ウィンドウ
  • ItemType番号= 4の項目名= Computer

したがって、番号からソートするのではなく、item.name(ASC)に基づいて次のようにソートする必要があります。

  • ItemType番号= 2の項目名= Chair
  • ItemType番号= 4の項目名= Computer
  • ItemType番号= 1の項目名=テーブル
  • ItemType番号= 3の項目名=ウィンドウ
26
muhihsan

このような何かがトリックを行う必要があります...

ItemType.includes( :item ).order( 'inventory_items.name DESC' )

また、多くの場所でこれを行う必要がある場合は、:orderパラメータをhas_many呼び出し、代わりに- http://apidock.com/Rails/ActiveRecord/Associations/ClassMethods/has_many

35
Brad Werth

特定の順序でデータベースからレコードを取得するには、 order method を使用できます。

Item.order(:name)

デフォルトでは、これは昇順でソートされます。

17
Andy Hayden

次のようにモデルでデフォルトの順序を設定することもできます。

default_scope order("#{self.table_name}.item_name ASC")

これにより、コントローラを変更せずにitem_nameでアイテムが並べ替えられます

1
Arif

名前の種類のフィールド(アルファベット)にASC(デフォルトのソートモード)を作成するには、

You can use ORDER BY Clause in MySQL

したがって、In Rails

Model.order(:field_name)
0
Jyothu