アイテムと分類ノードの 2 つのオブジェクトがあります。
接続されているtaxonomy_nodesのアルファベット順に基づいて注文したい「アイテム」の選択がありますが、IDが提供されている特定の「最上位の親」のみです(「を使用してアルファベット順にソートしたい」のように)この親」)。ネストされたセットを正しく理解していれば、左と右の値が上の親の左と右の値の「範囲内」にある場合、taxonomy_node が特定の親に属しているかどうかを確認できます。たとえば、左の値の一番上のノード「vegetable」 :1 and right: 10 には、子として値 left: 2 および right: 8 の「potato」があります。
アイテムには複数の taxonomy_nodes を含めることができます。私は awesome_nested_set gem を使用して、taxonomy_nodes が階層を持つネストされたセットのように動作するようにしています。したがって、アイテムがタグ付けされ、それらの「トップノード」によって識別されるさまざまな主要な「分類法」を持つことができます。
今のところ、taxonomy_node が特定の「トップ ノード」に属しているかどうかを識別する唯一の方法は、taxonomy_node の lft 値と rght 値を使用することです。主要な分類法の 1 つによるアイテムのリスト。
それを達成する唯一の方法は、注文自体に適用される「条件」を使用できるようにすることだと思いますが、実際にこれがどのように可能になるかはわかりません!
「item_template」などのより単純なフィールドでの注文は、簡単に実現できます。
@items.joins(:item_template).includes(:item_template}.order("template_name #{sorting_direction}")
分類表は次のとおりです。
Table name: taxonomies
id :integer not null, primary key
name :string(255)
parent_id :integer
lft :integer
rgt :integer
created_at :datetime not null
updated_at :datetime not null
depth :integer
タクソノミーは、ItemTaxonomy オブジェクトを介してアイテムに関連付けられます。私は PostgreSQL にあまり詳しくないので、この結果を達成するための関数を作成できないかと考えていました。
これが明確であることを願っています!