初めて ActiveRecord で API を設計しています。子オブジェクトの親オブジェクトがありhas_many
ます。belongs_to
親が持つ子オブジェクト:counter_cache => true
。
現在、API は、時間順に並べられたすべての子の配列を持つ親を含む JSON 構造を返します。デフォルトですべての子オブジェクトを返さないように API を変更したいと考えています。理想的には、API は、子 #1、#4、および #6-22 などを返すことができるほど柔軟であり、JSON 応答はこれらの位置を示します。
私の最初の本能は、整数インデックスを保持するデータベース内の各子オブジェクトに列を追加することでした。counter_cache
作成時に、その時点での親の値を使用して、この整数を割り当てることができます。このように、最初の子は #0、次の #1 というようになります。
それがこれを行う最善の方法ですか?
これが私のモデルです(モデル名は変更されています):
class Parent < ActiveRecord::Base
has_many :children, :dependent => :destroy
end
class Child < ActiveRecord::Base
belongs_to :parent, :counter_cache => true
end
次のような移行で、「序数」と呼ばれる整数列を Child に追加したいとしましょう。
class AddOrdinalToChild < ActiveRecord::Migration
def self.up
add_column :children, :ordinal, :integer, :default => 0
end
def self.down
remove_column :children, :ordinal
end
end
ordinal
親に属する各子について、その子がその親に作成/割り当てられた順序を序数で記録するようにするにはどうすればよいですか?