我第一次使用 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
,以便对于属于父母的每个孩子,序数记录该孩子被创建/分配给该父母的顺序?