나는이 그냥 속편 모델을 사용 가능하다고 생각하지만, 내가 뭘하고 싶은 내 상위 모델 (저자) 출력 하위 모델 (도서)가하지 않는 때 Author.to_json
과 같은 것을하십시오.루비 : 출력하기 속편 모델 협회
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
내 출력은 다음과 같은 : : 여기 내 코드입니다 정확히 내 출력이보고 싶은 방법은
[{
"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와 Sequel에 매우 익숙합니다. 그래서 이것을 수행하는 더 간단한 방법이 있는지 알고 싶습니다.
JSON이 유효하지 않으므로 작동하지 않습니다. 일반적으로 당신이 원하는 것을하고, 클래스에 대해'to_json'을 정의하고, 그 메소드 안에 당신이 반환하고자하는 모든 것을 모을 수 있습니다. 그런 다음 해시를 생성하고 그것에'to_json'을하십시오. 또한 프로덕션 출력에 예쁜 JSON 출력을 사용하지 마십시오. 그것은 비대 해져서 서버, 블롭 (blob) 전송 및 반대편 파서를 느리게 만듭니다. –
그래, JSON은 정확성보다는 개념의 증거로서 더 많이 존재 했었지만, 괄호 안에이 코드가 공식 코드가 아니며 분명히 그 코드를 사용했다. 당신이 말한 것에서 아이디어를 얻으려면 제 답변이 "아니오, 현재하고있는 것과 유사한 방법을 만들어야합니다"라고 들립니다. – incutonez
또한 'Author.to_json'이 적합하지 않습니다. 클래스 메소드는 해당 클래스의 모든 객체에 대해 모든 것을 반환하지 않는 한 원하는 입도를 제공하지 않습니다. 대신에,'foo = Author.new' 다음에 그 인스턴스로 무엇인가를하면,'foo.to_json'가 더 이해할 수 있습니다. 그런 다음 Author의 해당 특정 인스턴스에 대한 정보 만 반환합니다. Sequel의 JSON 직렬 변환기는 훌륭하지만 일반적입니다. 귀하의 사용은 전문화되어 있습니다. –