Rails模型相同类型的孩子?

时间:2013-09-07 01:13:54

标签: javascript ruby-on-rails ruby

在我的Rails应用程序中,我希望能够提交子提交的提交,或者属于同一模型的同一模型的实例。此外,还需要一个孩子"如果提交的子提交有子提交,则提交JSON中的属性。我需要能够通过前端JS检查。这是我的submission.rb文件:

class Submission < ActiveRecord::Base
belongs_to :user
    belongs_to :folder
    belongs_to :parent, :class_name => 'Submission'
    has_many :children, :class_name => 'Submission', :foreign_key => 'parent_id', :order => ('updated_at DESC')


    attr_accessible :content, :title, :user_id, :folder_id, :parent_id

    def self.search(search)
        if search
            where('name LIKE ?', "%#{search}%")
        else
            scoped
        end
    end

end

我通过:parent_id属性提交了一些属于一个父提交的子提交,但我检查了父提交JSON,它看起来像这样:

{"content":"Test","created_at":"2013-09-02T01:18:06Z","folder_id":4,"id":176,"parent_id":null,"title":"Title test","updated_at":"2013-09-02T01:18:06Z","user_id":2}

如您所见,没有children属性显示属于此父级的提交。在我的Rails应用程序中,我还有可以存储子文件夹的文件夹,我没有设置这种关系的问题。但这不起作用。我做错了什么?

1 个答案:

答案 0 :(得分:2)

是否返回了Rails关系或json数据的问题?

关系是否在rails控制台中有效? e.g。

Submission.find(176).children

你是如何渲染你的json的?如果你使用的是默认的Rails json渲染,你必须明确告诉Rails你要包含的has_many关系,例如。

render json: @submission.to_json(:include => :children)

如果你没有使用json builder(jbuilder,rabl等),我强烈推荐使用active_model_serializers