Yani bir JSON dosyası alıyorum, ancak nesneyi oluşturup oluşturduğumda, kimlik üretilmiyor.Rails import JSON postgresql nesnesini oluşturmuyor
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
'Topic' modelinde herhangi bir doğrulama var mı? – vee
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 –
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