在ActiveRecord中排序一对多关系

时间:2012-08-09 20:51:15

标签: ruby-on-rails rest activerecord

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

0 个答案:

没有答案