রেফারেন্সগুলি পলিমারফিক তৈরি করতে কীভাবে মাইগ্রেশন তৈরি করা যায়


121

আমার একটি পণ্য সারণী রয়েছে এবং একটি কলাম যুক্ত করতে চাই:

t.references :imageable, :polymorphic => true

আমি এটি করে মাইগ্রেশন উত্পন্ন করার চেষ্টা করছিলাম:

$ rails generate migration AddImageableToProducts imageable:references:polymorphic

তবে আমি স্পষ্টতই এটি ভুল করছি। কেউ কি কোনও পরামর্শ দিতে পারেন? ধন্যবাদ

মাইগ্রেশন তৈরির পরে আমি যখন ম্যানুয়ালি এটি প্রবেশ করার চেষ্টা করি তখন আমি এটি এটি করেছিলাম:

class AddImageableToProducts < ActiveRecord::Migration
  def self.up
    add_column :products, :imageable, :references, :polymorphic => true
  end

  def self.down
    remove_column :products, :imageable
  end
end

এবং এটি এখনও কাজ করে না


কোনও উত্তর নয়, তবে বিভ্রান্তি এড়াতে, আপনি কি নিশ্চিত যে পণ্যগুলিতে এই কলামটি চান? রেল গাইডের এমনকি একটি পণ্যের উদাহরণ রয়েছে এবং কলামটি পিকচার গাইডগুলিতে রয়েছে
rubyonrails.org/…

উত্তর:


109

যতদূর আমি জানি, পলিমারফিক সংঘের জন্য কোনও বিল্ট-ইন জেনারেটর নেই। একটি খালি মাইগ্রেশন তৈরি করুন এবং তারপরে আপনার প্রয়োজনীয়তা অনুসারে এটিকে নিজের হাতে সংশোধন করুন।

আপডেট : আপনি কোন টেবিলটি পরিবর্তন করছেন তা উল্লেখ করতে হবে। এই এসও উত্তর অনুসারে :

class AddImageableToProducts < ActiveRecord::Migration
  def up
    change_table :products do |t|
      t.references :imageable, polymorphic: true
    end
  end

  def down
    change_table :products do |t|
      t.remove_references :imageable, polymorphic: true
    end
  end
end

আপনাকে অনেক ধন্যবাদ ব্র্যান্ডন আমি মাইগ্রেশন চালাতে সক্ষম হয়েছি। আমি ভাবছিলাম যদিও আপনি তৈরি করার পরে: বহুভুজ => সত্য এবং আপনি স্কিমা খুললেন open rb আপনি কী এটিও স্কিমাতে দেখতে পাচ্ছেন?
রেলস্লাইনার

আপনি মাইগ্রেশন চালানোর পরে schema.rbআপডেট করা উচিত, তবে এটি সম্পর্কে কিছুই বলবে না polymorphic। পরিবর্তে, আপনার আসল ক্ষেত্রগুলি যা রেলগুলি ব্যবহার করে তা দেখতে হবে ( রেল গাইডদের আরও তথ্য রয়েছে)।
মিশেল টিলি

2
কীভাবে আপনি referencesকলামে সূচি যুক্ত করবেন ? আমার কি তা সূচকের দরকার?
mrudult

@ এম্রুডল্ট যদি আমার ভুল না হয় তবে আপনার যদি তাদের প্রয়োজন হয় তবে আপনাকে সেগুলি যোগ করতে হবে। আপনি স্থানান্তর ফাইলে imageable_typeএবং / অথবা imageable_idপ্রয়োজনীয় হিসাবে কেবলমাত্র সূচকগুলি যুক্ত করতে পারেন ।
মিশেল টিলি

2
হা. সূচক যুক্ত imageable_idএবং imageable_typeকাজ। আপনার সাহায্যের জন্য ধন্যবাদ.
mrudult

266

আপনি যা করার চেষ্টা করছেন তা এখনও রেলের স্থিতিশীল সংস্করণে প্রয়োগ করা হয়নি তাই মিশেলের উত্তরটি আপাতত সঠিক। তবে এই বৈশিষ্ট্যটি রেল 4 তে প্রয়োগ করা হবে এবং ইতিমধ্যে নিম্নোক্ত প্রান্ত সংস্করণে এটি উপলব্ধ (এই চ্যানেলগ অনুসারে ):

$ rails generate migration AddImageableToProducts imageable:references{polymorphic}

1
এটি ৪.২-এ চেষ্টা করেছেন এবং আমি নিশ্চিত নই যে এটি কোনও বাগ, জেডএস, বা অন্য কিছু কিনা তবে কমান্ডলাইনটি পলিমারফিকের প্রতিটি অক্ষরের সাথে বিভিন্ন ধরণের রেফারেন্স (ধরণ হিসাবে) হিসাবে ব্যাখ্যা করা হয়েছিল, যেমন: t.referencessp: ইমেজযোগ্য , ট্রিরিসো: ইমেজযোগ্য, ইত্যাদি
ওজবাড়ি

10
@ ওজবারি, জেডএস-এ আপনার ধনুর্বন্ধনীগুলি থেকে বাঁচতে হবে: ration রেলগুলি হ'ল স্থানান্তরিত অ্যাডিমাজেবলটিপ্রোডস চিত্রমুক্ত: রেফারেন্স \ ym পলিমারফিক ph}
চাদ_১

4
কৌতূহলী যে কারও জন্য, এটি পরিবর্তনের পদ্ধতি সহ একটি মাইগ্রেশন তৈরি করে:add_reference :products, :imageable, polymorphic: true, index: true
স্টিভেনস্পিল

1
যে কেউ স্ক্যাফোলে একই ব্যবহার করার চেষ্টা করছে, এটি স্ক্যাফোর্ডের সাথেও কাজ করে with ধন্যবাদ! rijks
sghosh968

2
{polymorphic}ফিশ শেলটি দিয়ে পালাতে হবে, উদাহরণস্বরূপ\{polymorphic\}
ডোরিয়ান

36

আপনি নিম্নলিখিতগুলি করতে পারেন:

class AddImageableToProducts < ActiveRecord::Migration
  def change
    add_reference :products, :imageable, polymorphic: true, index: true
  end
end

16

আপনি চেষ্টা করতে পারেন rails generate migration AddImageableToProducts imageable:references{polymorphic}


3
{এবং }কমপক্ষে মাছের শেলটি দিয়ে পালানো দরকার\{polymorphic\}
ডোরিয়ান

1
এখানে এই সম্পর্কে ডকুমেন্টেশন লিংক edgeguides.rubyonrails.org/...
জিওভান্নি Benussi

ধন্যবাদ জিওভান্নি, এটি খুব দরকারী।
হুতুসি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.