首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby:输出续集模型关联

Ruby:输出续集模型关联
EN

Stack Overflow用户
提问于 2014-04-29 15:45:01
回答 1查看 827关注 0票数 0

我认为只使用续集模型是不可能的,但我想做的是让我的父模型(Author)输出它的子模型(Book),当我做Author.to_json之类的事情时。这是我的代码:

代码语言:javascript
运行
复制
require 'sequel'
require 'json'

db = Sequel.connect('postgres://localhost/testing');

class Sequel::Model
  self.plugin :json_serializer
end

class Author < Sequel::Model(:author)
  one_to_many :book, key: :author_id, primary_key: :id

  def get_author
    Author.each do |e|
      books = Array.new
      e.book.each do |f|
        books.push(f.values)
      end
      e.values[:books] = books
      puts JSON.pretty_generate(e.values)
    end
  end
end

class Book < Sequel::Model(:book)
end

author = Author.new
author.get_author

我的输出如下所示:

代码语言:javascript
运行
复制
[{
  "id": 1,
  "name": "Jack Johnson",
  "books": [{
    "id": 4,
    "name": "Songs with Chords",
    "genre": "Learning",
    "author_id": 1
  }]
}, {
  "id": 2,
  "name": "Mulder",
  "books": [{
    "id": 2,
    "name": "UFOs",
    "genre": "Mystery",
    "author_id": 2
  }, {
    "id": 3,
    "name": "Unexplained Paranorma",
    "genre": "Suspense",
    "author_id": 2
  }]
}, {
  "id": 3,
  "name": "Michael Crichton",
  "books": [{
    "id": 1,
    "name": "Jurassic Park",
    "genre": "Incredible",
    "author_id": 3
  }]
}]

这正是我想要我的输出的样子,但我的方式是值得怀疑的。理想情况下,如果作者模型上已经有一些函数允许我这样做,那就太棒了.因为我不想为所有具有不同关联的模型实现get_model函数。另外,我希望NestedAttributes能在这里伸出援手,但看起来不像。

我对Ruby和续集非常陌生,所以我想知道是否有一种更简单的方法来做到这一点?

EN

Stack Overflow用户

回答已采纳

发布于 2014-04-29 18:53:38

Sequel的json_serializer插件已经通过:include选项支持关联。另外,你需要修复你的联系。像这样的事情应该有效:

代码语言:javascript
运行
复制
Author.one_to_many :books
Author.order(:id).to_json(:include=>:books)
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23369336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档