次のシナリオで適切なモデル、関連付け、およびクエリを作成し、Ruby で Sequel を使用して結果を JSON として返すという問題が発生しています。
データベース構造___
本のリストを作成できます。各ライブラリには書籍が含まれています。以下によって定義されます。
db.create_table(:books) do
primary_key :id
String :name
String :author
DateTime :created
end
db.create_table(:libraries) do
primary_key :id
String :name
String :city
String :state
DateTime :created
end
db.create_table(:libraries_books) do
Integer :library_id
Integer :book_id
primary_key [:library_id, :book_id]
end
class Library < Sequel::Model(:libraries)
many_to_many :libraries_books, :left_key=>:library_id, :right_key=>:book_id, :join_table=>:libraries_books
one_to_many :libraries_books, :key=>:library_id
end
class LibraryBook < Sequel::Model(:libraries_books)
many_to_one :libraries
many_to_one :books
end
特定のライブラリのすべての書籍名にアクセスする正しい方法を決定しようとしています。最初は Sequel Associations ガイドに従おうとしましたが、LibraryBook を関連付けと共に使用してライブラリのすべての本を取得し、Book モデルに参加して適切な列を取得する方法を理解できませんでした。
説明されている方法のいくつかに行き詰まった後、次のように独自のクエリを作成しようとしました。
LibraryBook.select(:books.*)
.join_table(:inner, :libraries, :id => :library_id)
.join_table(:inner, :books, :id => :book_id)
.where(:library_id => 1)
それは私を部分的にそこに連れて行くようです。ただし、シリアライゼーション拡張機能を使用すると、結果の変換中にエラーが発生します。
undefined method `book_id' for #<LibraryGame:0x007fa9e904b470>
提供できることについての洞察は非常に役立ちます!