经过密集的谷歌搜索后,我现在将指出一个似乎不经常发生但仍然非常基本的问题。Active Record 中的链表。就我现在而言,我们需要模型中的两个关联:
class Child < ActiveRecord::Base
belongs_to :parent
belongs_to :next, :class_name => 'Child', :foreign_key => 'next_id'
belongs_to :previous, :class_name => 'Child', :foreign_key => 'previous_id'
end
所以现在我们可以得到一个父母的所有孩子:
children = Child.where("parent_id = ?", parent_id)
现在问题来了:我当然想用一个查询从数据库中获取所有孩子,但我也想按链接顺序遍历孩子,这意味着第一个将是前一个属性为 nil 的孩子,下一个孩子将是由第一个下一个属性连接的那个,依此类推,直到下一个属性为零。是否可以这样做,或者我是否需要查询第一个孩子,然后在没有“预缓存”的情况下从一个孩子到另一个孩子?