Rails 查询父模型未检索到子模型

Rails query of parent model doesn't retrieve child models

我在 rails 5 上有父模型和子模型,id 为 mongo。当我使用 .includes 命令查询父级时 - 我可以看到 rails 试图查询 mongo 数据库 - 但结果 json 没有 return 子对象.

父模型:

class Activity
   include Mongoid::Document
   field :title, type: String

   has_many :activity_pictures
end

童模:

class ActivityPicture
   include Mongoid::Document
   field :name, type: String
   belongs_to :activity, :class_name => 'Activity'
end

控制器方法:

def index
     @activities = Activity.includes(:activity_pictures).all
end

def show
     Activity.includes(:activity_pictures)
end

当然,我更新了activity_params:

def activity_params
    params.require(:activity).permit(:title, :activity_pictures)
end

如何从 http://localhost:3000/activities.json 和单个对象链接中获取完整的 json 数据?

在使用 includes 加载关联时,您需要专门调用加载的关联才能呈现。尝试

def index
  @activities = Activity.includes(:activity_pictures).all
  render json: @activities, include :activity_pictures
end

margo 上面的回答是正确的。不过我正在使用 jbuilder,所以解决方案是更改文件

index.json.jbuilder

如下:

json.array! @activities do |activity|
    json.title activity.title
    json.activity_pictures activity.activity_pictures do |activity_picture|
       json.name activity_picture.name
  end
end