J'essaie de renvoyer des données au format json depuis mon API Sinatra REST. J'ai actuellement un tas d'associations mises en place, mais j'ai de la difficulté à obtenir les vues que je veux de mon API malgré le fait de les avoir facilement dans Ruby.Obtention d'associations Sequel via Sinatra
Par exemple, de mes tableaux:
DB.create_table?(:calendars) do
primary_key :id
end
DB.create_table?(:schedules) do
primary_key :id
foreign_key :resource_id, :resources
foreign_key :task_id, :tasks
foreign_key :calendar_id, :calendars
end
En Ruby, je suis en mesure d'exécuter un bloc comme celui-ci et afficher toutes les informations dont j'ai besoin dans mes associations:
Calendar.each do |c|
c.schedules.each do |s|
puts "RESOURCE ##{s.resource_id}"
s.tasks.each do |t|
p t
end
puts
end
end
la L'appel fonctionne parce que mon modèle calendar
contient une association one_to_many :schedules
. Maintenant, je me demande comment cela se traduit par mon API Sinatra. Dans mon simple, la route GET
, j'ai essayé de nombreuses variantes en essayant d'obtenir les horaires associés à un calendrier, et le convertir en JSON:
get '/calendars' do
c = DB[:calendar].first
c.schedules.to_json
content_type :json
end
... mais je vais finir avec une erreur comme undefined method 'schedules' for {:id=>1}:Hash
On dirait que ça retourne un hachage ici, mais j'ai essayé pas mal de choses et je n'ai pas compris comment je devais travailler avec mes associations dans Sinatra. Comment puis-je faire ceci?
Merci!