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,下一个子将是由第一个下一个属性连接的那个,依此类推,直到下一个属性为零。 有可能这样做,还是我需要查询第一个孩子,然后从孩子到孩子而不“预先”?
答案 0 :(得分:3)
resort和ranked-model宝石是其他选择。 第一个使用类似于链表的方法。第二个使用位置属性。
答案 1 :(得分:1)
您应该使用Rails acts_as_list gem。它将项目的位置存储在列表中,甚至将范围存储到列表和belongs_to
的父对象。通过允许您查询所有元素然后对它们进行正确排序,它也可以解决这个问题。