我有一个属于和 has_many 的关系。
一个孩子属于_一个父母 一个父母有_许多孩子。
但是,我还有另一种方法,父母可以生孩子,那就是通过我用来创建父类型分组的 join_table。
这是我对如何做到这一点的可怕猜测:
# child.rb
belongs_to :parent
belongs_to :parent_group, :dependent => :destroy
delegate :parent, :to => :parent_group
# parent.rb
has_many :children
has_many :children, through: :parent_groups
请注意,我实际上并没有使用这些命名约定。这些只是为了让我的工作匿名。
然后我的迁移看起来像这样:
class CreateParentGroup < ActiveRecord::Migration
def self.up
create_table :parent_groups do |t|
t.integer :parent_id
t.timestamps
end
add_column :child, :parent_group_id, :integer
end
所以我的目标是,如果我输入Parent.find(n).children
,它将返回通过parent_group 和任何直接相关的子对象的子对象。
反之亦然,如果我选择 select Child.find(n).parent
,无论是否通过父组,它都会选择其父组。
最后,我将能够选择 parent_groups 并选择父母的集合。
有任何想法吗?