So importieren ich eine JSON-Datei, aber wenn ich gehe und das Objekt erstellen, wird die ID nicht generiert.Rails importieren JSON nicht erstellen Objekt in Postgresql
Hier ist meine Importmethode:
namespace :fieldfacts do
desc "Import Topics"
task :import_topics => :environment do
records = JSON.parse(File.read('public/topics.json'))
records.each do |record|
a = Topic.create
a.name = record['name']
a.save
end
end
end
Hier ist der Fehler:
Und ich glaube nicht, es ohne eine ID gespeichert ist wird. Also, wie bekomme ich eine ID drin? Vielen Dank!
EDIT: Nach dem Thema Modell, muss ich eine user_id durch topics_owners setzen, aber wie mache ich das?
Thema Modell
has_many :topics_owners
has_many :users, -> { uniq }, through: :topics_owners
validates :name, presence: true
validates :user_ids, presence: {:message => "There must be an assigned Topic Owner to continue."}
validates :name, uniqueness: true
-Controller
def topic_params
params.require(:topic).permit(:name, :description, :active, [keywords: [:id, :keyword]], [keywords_deleted: [:keyword]], :keywords_list, :keywords_list_deleted,
:organizations_list, :organizations_list_deleted, [organizations: [:id, :organization]], [organizations_deleted: [:organization]],
:social_groups_list, :social_groups_list_deleted, [social_groups: [:id, :social_group]], [social_groups_deleted: [:social_group]],
:feeds_list, :feeds_list_deleted, [feeds: [:id, :feed, :source_url]], [feeds_deleted: [:feed]],
{:articles_list => []}, :articles_list_deleted, :influencers, {:feeds_list => []},
:articles_object, {:feeds_object => []}, :topic_api_id, :read_only, {user_ids: []}, {:influencers_ids => []},
[:people_relevants => [:name, :id, :influencer_id, :topic_id]],
[influencers_adds: [:id, :weight, :influencers_add]], [:influencers_deleted => [:id]], [:influencers_list_deleted => [:id => []]],
[people: [:id, :person, :weight]], [people_deleted: [:person]],
[influencers_topics_attributes: [:influencer_id, :id, :_destroy]], :updater_id, :creator_id,
[influencer_attributes: [:name, :active]])
end
schema.rb
create_table "topics", force: true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "influencers_topics_count", default: 0, null: false
t.text "description"
t.integer "creator_id"
t.integer "updater_id"
t.boolean "read_only"
t.string "topic_api_id"
t.integer "people_relevants_count"
t.boolean "active", default: false
t.datetime "activation_date"
end
add_index "topics", ["name"], name: "index_topics_on_name", using: :btree
create_table "topics_owners", force: true do |t|
t.integer "topic_id"
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "topics_owners", ["topic_id"], name: "index_topics_owners_on_topic_id", using: :btree
add_index "topics_owners", ["user_id"], name: "index_topics_owners_on_user_id", using: :btree
Haben Sie eine Validierung am 'Topic' Modell? – vee
Dies ist im Themenmodell. validiert: name, presence: true validiert: user_ids, presence: {: message => "Es muss ein zugewiesener Topic Owner vorhanden sein."} validiert: name, uniqueness: true –
Die Validierungen sind die Probleme für Sie . Feuere die 'rails console' auf und probiere die Befehle aus. Sie werden genau sehen, was vor sich geht. Versuchen Sie 'a = Topic.new' anstelle von' a = Topic.create' zu verwenden und 'a' aufzubauen, bevor Sie es speichern. – vee