我是第一次使用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上添加一个名为“ordinal”的整数列,其迁移方式如下:
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
以便对于属于父母的每个孩子,序数记录该孩子被创建/分配给该父母的顺序?