2016-03-23 19 views
-1

Yani bir JSON dosyası alıyorum, ancak nesneyi oluşturup oluşturduğumda, kimlik üretilmiyor.Rails import JSON postgresql nesnesini oluşturmuyor

enter image description here

Ve bunun kimliği olmayan kaydediliyor sanmıyorum:

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 

İşte hata var:

İşte benim ithalat yöntemidir. Peki orada bir kimlik nasıl alabilirim? Teşekkürler!

DÜZENLEME: Konu modeline göre, topic_owners aracılığıyla bir user_id ayarlamam gerekiyor, ancak bunu nasıl yaparım?

Konu Modeli

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 

Kontrolör Muhtemelen a.save! yerine a.save (ve create ile aynı) kullanmalıdır

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 
+1

'Topic' modelinde herhangi bir doğrulama var mı? – vee

+0

Bu Konu modelinde. doğrular: ad, varlığı: true doğrular: user_ids, varlığı: {: mesaj => "Devam etmek atanmış bir konu Sahibi olmalı."} doğrular: benzersizliği adı: true –

+1

doğrulamaları sizin için problemlerdir . Raylar konsolunu ateşleyin ve komutları deneyin. Tam olarak neler olduğunu göreceksin. "A = Topic.create" yerine "a = Topic.new" ifadesini kullanmayı ve kaydetmeden önce "a" yı oluşturmayı deneyin. – vee

cevap

0

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. Patlama, başarı/başarısızlık için (görmezden geldiğiniz) true veya false'u döndürür. Patlama sürümü, hata durumunda bir istisna ortaya çıkarır. Bu, bir şeylerin yanlış olduğunu hemen bildirir. Sorunun ne olduğunu öğrenmek istiyorsanız

Ayrıca, özellikle a.errors.full_messages (non-patlamayla save ve create yüzden hala a bir başvuru var olan), a.errors kontrol edebilirsiniz. Bu durumda sorun, doğrulamalarınızdan bazılarıdır (user_ids gereklidir, belki de benzersiz olmayan bir name).

+0

Bahşiş için teşekkürler. Hatalar bana ihtiyacım olduğunu söyledi - validates: user_ids, presence: {: message => "Devam etmek için atanmış bir Konu Sahibi olmalı."}. Bana komisyonum görevimde nasıl yapılacağını söyleyebileceğin bir ihtimal var mı? –

İlgili konular