2016-03-24 3 views
0

Ich versuche, eine Rake-Aufgabe zu erstellen, die Daten von einer API abruft. Die Daten, die ich brauche, haben jedoch Daten von verschiedenen Modellen.Aufruf der ActiveRecord-Beziehung mit dem polymorphen Modell

Hier ist mein Fehler:

[ 
    { 
    "id": 3, 
    "name": "Precision Agriculture", 
    "topics_owners_ids": "#<User::ActiveRecord_Associations_CollectionProxy:0x000000095fa498>", 
    "keywords_list": null, 
    "keywords": [ 

    ], 
    "organizations_list": null, 
    "organizations": [ 

    ], 
    "social_groups_list": null, 
    "feeds_list": null, 
    "articles_list": null, 
    "people": null 
    } 

]

Hier ist meine Rake Aufgabe:

namespace :fieldfacts do 
    desc "Export Topics" 
    task :export_topics => :environment do 
    out = [] 
    File.open("public/topics.json","w") do |f| 
     Topic.all.each do |topic| 
      api = TopicsService.new() 
      topic_api = api.get(topic.topic_api_id) 
      out << { 
      'id' => topic.id, 
      'name' => topic.name, 
      'topics_owners_ids' => topic.users.id, 
      'keywords_list' => topic_api.keywords_list, 
      'keywords' => topic_api.keywords, 
      'organizations_list' => topic_api.organizations_list, 
      'organizations' => topic_api.organizations, 
      'social_groups_list' => topic_api.social_groups_list, 
      'feeds_list' => topic_api.feeds_list, 
      'articles_list' => topic_api.articles_list, 
      'people' => topic_api.people 
      } 
     end 
     f.write(JSON.pretty_generate(out)) 
    end 
    end 
end 

Wie Sie sehen können, ist der topics_owners_ids nicht die richtigen Daten zurück. Ich bin mir nicht sicher, wie ich es holen soll.

Antwort

1

topic.users wird Ihnen das Objekt Sammlung geben und Sie müssen IDs auswählen. Versuchen topic.users.pluck(:id)

+0

Ich denke, es funktioniert, obwohl jede ID ist 1 und ich bin mir nicht sicher, wie man überprüft, ob das korrekt ist oder nicht. –

+0

Möglicherweise sind alle Ihre Themen mit demselben Benutzer verknüpft. Sie können das in Ihrer Datenbank überprüfen. Wenn Sie nur eindeutige IDs benötigen, können Sie auch 'topic.users.pluck (: id) .compact.uniq' verwenden. Dies wird auch Null loswerden. – archana

Verwandte Themen