0

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

4

0 回答 0