T.belongs_to এবং রেলগুলিতে t.references মধ্যে পার্থক্য কি?


123

মধ্যে পার্থক্য কি t.referencesএবং t.belongs_to? কেন আমরা এই দুটি পৃথক শব্দ হয়? আমার কাছে মনে হচ্ছে তারাও একই কাজ করে? কিছু গুগল অনুসন্ধান করার চেষ্টা করেও কোনও ব্যাখ্যা খুঁজে পেল না।

class CreateFoos < ActiveRecord::Migration
  def change
    create_table :foos do |t|
      t.references :bar
      t.belongs_to :baz
      # The two above seems to give similar results
      t.belongs_to :fooable, :polymorphic => true
      # I have not tried polymorphic with t.references
      t.timestamps
    end
  end
end

1
তারা একই কাজ করে - এটি কি খুব খারাপ জিনিস? রেফারেন্সগুলি আপনার জন্য একটি বিদেশী কী কলাম সন্নিবেশ করে। আপনার স্থানান্তরকে আরও বেশি পঠনযোগ্য করে তুলতে আপনি নিজের_পরে ব্যবহার করতে পারেন। কিছু বিশদ জানতে গাইডস রবায়নরইলস.অর্গ / ইমিগ্রেশনস html দেখুন ।
muffinista

1
বলা খারাপ কাজ নয়। তারা একই বা ভিন্ন উপায়ে কাজ করে কিনা তা নিয়ে কেবল বিভ্রান্ত হয়ে পড়েছি, যেহেতু আমি কোনও ডকুমেন্টেশন সুনির্দিষ্টভাবে বলতে পারি না যে তারা একই কাজ করে বলে। http://guides.rubyonrails.org/migrations.html বিষয়টিও পরিষ্কার নয়।
টর্নস্কাডেন

3
এটি সম্ভবত পশ্চাদপদ সামঞ্জস্যের জন্য এবং referencesভবিষ্যতে রেলের রিলিজে অবচিত ও সরানো হবে। এটিতে আমার কথাটি গ্রহণ করবেন না, এটি কেবল শিক্ষিত অনুমান।
ইটকার

"অন্য সহায়ককে রেফারেন্স বলা হয় (এটিও অন্তর্ভুক্ত হিসাবে উপলব্ধ) এটির সহজতম আকারে এটি কেবল কিছু পাঠযোগ্যতা যুক্ত করে" - গাইড থেকে
মফিনিস্ট

5
এছাড়াও এখানে সোর্স কোড নেই - belongs_to রেফারেন্স সোজা ওরফে হয় github.com/rails/rails/blob/...
muffinista

উত্তর:


161

এ খুঁজছি সোর্স কোড , তারা একই সঠিক জিনিস করতে - belongs_toএকজন ওরফে হয় reference:

  def references(*args)
    options = args.extract_options!
    polymorphic = options.delete(:polymorphic)
    args.each do |col|
      column("#{col}_id", :integer, options)
      column("#{col}_type", :string, polymorphic.is_a?(Hash) ? polymorphic : options) unless polymorphic.nil?
    end
  end
  alias :belongs_to :references

এটি আপনার কোডটিকে আরও পঠনযোগ্য করার একমাত্র উপায় - belongs_toউপযুক্ত হলে আপনার স্থানান্তরগুলিতে রাখতে সক্ষম referencesহওয়ায় এবং অন্যান্য ধরণের সংঘের সাথে যুক্ত হন to


আমি ভাবছি তারা যদি ভবিষ্যতে এইভাবে রাখে বা তারা যে কোনও একটিকে সরিয়ে ফেলছে !? আমি এইভাবে এটি পছন্দ করি, আমার কোডটি যে কোনওটি সত্যিকারের ইংলিশের মতো দেখায় makes
টর্নস্কাডেন

আমি অনুমান করব যে উভয়ই এখানে থাকার জন্য এসেছেন। প্রতিশ্রুতিবদ্ধ লগগুলি দেখে, 2007 সালের পর থেকে এটি
এইভাবেই ছিল

4
আইএমও, referencesএকটি শব্দটির জন্য একটি অস্পষ্ট পছন্দ। তাদের নামকরণ before_filterহয়েছে before_action, এটি একটি ভাল পদক্ষেপ কারণ এটি অস্পষ্টতা হ্রাস করেছিল। এর একটি সুবিধা referencesহ'ল এটি আপনি মডেলটিতে যা ব্যবহার করেন তার চেয়ে সহজ so তবে যে কোনও পদ পৃথক হয় এই মানদণ্ডকে সন্তুষ্ট করবে।
অহনিবিজ্যাকড

2
আইএমও referencesডিবি-স্তরে আরও ভাল শব্দ।
ভাসিলাকিসফিল

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