Rails 4 - 如何动态引用与自身相关的未知表?

时间:2015-02-14 03:06:25

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord rails-activerecord

在尝试为动态生成的索引视图构建自动过滤系统时,我发现需要在同一个表上处理相关记录(例如,一个任务属于通过设置为外来的parent_id字段的Tasks如何引用自相关表?

下面的'klasses'示例是有问题的插图。

# Compile recursive array based on parent_id, 
# where parent_id is foreign_key on it's same table 

def build_recursive(conditions)
    @children = []
    klass = current_controller.singularize.constantize.where(conditions).all

    def fetch_subs(sub)            
        sub.klasses.where(conditions).order(:sort).each do |child| <-- how to dynamically reference 'klasses'?
            @children << child
            fetch_subs(child)
        end
        return @children
    end

    klass.klasses.each do |record|  <-- how to dynamically reference 'klasses'? 
        @children << record
        fetch_subs(record)  
    end

    return @children
end

在这个例子中,如何动态引用'klasses',其中klasses将是当前控制器的相关和相同的表?

此外,如果现有宝石或更好的解决方案,我会非常感激地接受其他建议。提前谢谢。

1 个答案:

答案 0 :(得分:1)

查看ancetry gem它可以让您轻松管理父母与子女的关系。