ruby on rails - পিজি:: অপরিশোধিত টেবিল: ত্রুটি: সম্পর্ক "…" বিদ্যমান নেই




ruby-on-rails postgresql (2)

আমিও এই ত্রুটি পেয়ে যাচ্ছিলাম। আপনি যদি আরএসপেক চালানোর জন্য একটি পরীক্ষা ডেটাবেস ব্যবহার করে থাকেন তা নিশ্চিত করে নিন যে আপনি রেক rake db:test:prepare চালাচ্ছেন rake db:test:prepare আরএসপিএক চালানোর আগে টার্মিনালে rake db:test:prepare

মাইগ্রেশনে আমি নিম্নলিখিত ত্রুটি বার্তাটি পাই:

PG::UndefinedTable: ERROR:  relation "actioncodes" does not exist
: ALTER TABLE "organizations" ADD CONSTRAINT "fk_rails_4ecaa2493e"
FOREIGN KEY ("actioncode_id")
  REFERENCES "actioncodes" ("id")

সংস্থাগুলির জন্য আমার কাছে নিম্নলিখিত মাইগ্রেশন ফাইল রয়েছে:

class CreateOrganizations < ActiveRecord::Migration
  def change
    create_table :organizations do |t|
      t.string     :name,         null: false,    limit: 40
      t.references :actioncode,   index: true,    foreign_key: true
      t.boolean    :activated
      t.datetime   :activated_at

      t.timestamps null: false
    end
  end
end

এবং অ্যাকশনকোডগুলির জন্য আমার কাছে মাইগ্রেশন ফাইল রয়েছে:

class CreateActioncodes < ActiveRecord::Migration
  def change
    create_table :actioncodes do |t|
      t.string  :code,          null: false,  limit: 20
      t.string  :description,                 limit: 255

      t.timestamps null: false
    end
  end
end
class AddIndexToActioncodesCode < ActiveRecord::Migration
  def change
    add_index :actioncodes, :code,  unique: true
  end
end

প্রতিষ্ঠানের মডেল ফাইলটিতে অন্তর্ভুক্ত রয়েছে: belongs_to :actioncode

অ্যাকশনকোডগুলি মডেল ফাইলের মধ্যে রয়েছে: has_many :organizations

কোন ধারণা কি ত্রুটি বার্তা কারণ হতে পারে?

যদি আমি index: true, foreign_key: true অপসারণ করি index: true, foreign_key: true মাইগ্রেশন ফাইল থেকে index: true, foreign_key: true , এটি ত্রুটি ছাড়াই স্থানান্তরিত করে। এবং যখন আমি সেই লাইনটিকে ভুল রেখার সাথে প্রতিস্থাপন করব t.references :actioncode_id, index: true, foreign_key: true , এটি নীচে ত্রুটি দেয় যেখানে শেষ লাইন ("আইডিস") প্রস্তাব দেয় যাতে কোনওভাবেই এর নামটির সাথে সমস্যা আছে বলে মনে হয় টেবিল?

PG::UndefinedTable: ERROR:  relation "actioncode_ids" does not exist
: ALTER TABLE "organizations" ADD CONSTRAINT "fk_rails_604f95d1a1"
FOREIGN KEY ("actioncode_id_id")
  REFERENCES "actioncode_ids" ("id")

সুতরাং সমস্যাটি ঘটছে কারণ CreateOrganizations কার্যকর করার আগে CreateActioncodes মাইগ্রেশন চলছে।

CreateActioncodes প্রথমে চালানো হবে যার মাধ্যমে action codes সারণী বিদ্যমান রয়েছে তা নিশ্চিত করে।

মাইগ্রেশন পরিচালিত ক্রমটি স্থানান্তরের টাইম স্ট্যাম্পের উপর ভিত্তি করে - যেমন ফাইলের নামে নির্দেশিত। 20141014183645_create_users.rb দ্বিতীয়টির টাইমস্ট্যাম্প হিসাবে 20141014205756_add_index_to_users_email.rb আগে 20141014205756_add_index_to_users_email.rb - 20141014205756 পরে - 20141014183645

নিশ্চিত করুন যে CreateOrganizations মাইগ্রেশনের টাইম স্ট্যাম্পগুলি CreateOrganizations স্থানান্তরের পরে রয়েছে।

হয় আপনি নিজেই ফাইলের নামগুলির টাইমস্ট্যাম্পটি পরিবর্তন করতে পারেন। অথবা এই স্থানান্তর ফাইলগুলি মুছুন এবং এগুলি সঠিক ক্রমে তৈরি করুন।





rails-migrations