2

在我的 Rails 应用程序中,我希望提交能够有子提交,或者属于同一模型的实例。此外,如果相关提交有子提交,则提交 JSON 中需要有一个“子”属性。我需要能够通过前端 JS 进行检查。这是我的 submit.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 应用程序中,我也有可以是子文件夹的文件夹,我可以毫无问题地设置这种关系。但这行不通。我究竟做错了什么?

4

1 回答 1

2

是 Rails 关系的问题还是返回的 json 数据有问题?

这种关系在 Rails 控制台中有效吗?例如

Submission.find(176).children

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

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

如果您还没有使用 json 构建器(jbuilder、rabl 等),我强烈推荐 active_model_serializers

于 2013-09-07T01:26:53.503 回答