Has_many ব্যবহার করার সময় অবচয় হুঁশিয়ারি: মাধ্যমে: রেল 4 এ ইউনিক


95

4 রেলগুলি ব্যবহার করার সময় হ্রাসকারী সতর্কতা প্রবর্তন করেছে: has_many: un সাথে = সত্য ব্যবহার করে। উদাহরণ স্বরূপ:

has_many :donors, :through => :donations, :uniq => true

নিম্নলিখিত সতর্কতা ফলন:

DEPRECATION WARNING: The following options in your Goal.has_many :donors declaration are deprecated: :uniq. Please use a scope block instead. For example, the following:

    has_many :spam_comments, conditions: { spam: true }, class_name: 'Comment'

should be rewritten as the following:

    has_many :spam_comments, -> { where spam: true }, class_name: 'Comment'

উপরোক্ত has_many ঘোষণাটি পুনরায় লেখার সঠিক উপায় কী?

উত্তর:


238

uniqবিকল্প একটি সুযোগ ব্লক সরানো হবে। নোট করুন যে স্কোপ ব্লকটির দ্বিতীয় প্যারামিটার হওয়া দরকার has_many(যেমন আপনি এটি লাইনের শেষে ছেড়ে দিতে পারবেন না, এটি :through => :donationsঅংশের আগে সরিয়ে নেওয়া প্রয়োজন ):

has_many :donors, -> { uniq }, :through => :donations

এটি দেখতে দেখতে অদ্ভুত লাগতে পারে তবে আপনি যেখানে একাধিক পরামিতি রেখেছেন সে ক্ষেত্রে যদি আপনি বিবেচনা করেন তবে এটি কিছুটা বেশি অর্থবোধ করে। উদাহরণস্বরূপ, এটি:

has_many :donors, :through => :donations, :uniq => true, :order => "name", :conditions => "age < 30"

হয়ে:

has_many :donors, -> { where("age < 30").order("name").uniq }, :through => :donations

ধন্যবাদ, এটি দুর্দান্ত কাজ করে! আপনি এটি কোথায় পেলেন? আমি ডকুমেন্টেশনে এটি কোথাও খুঁজে পাচ্ছি না।
রায়ান ক্রিস্পিন হেইনেস

6
আমি এটি এটিকে আপগ্রেডিং টু রেলস 4 বইয়ে দেখেছি (এটি প্রগতিতে রয়েছে): upgradingtorails4.com - এটি অন্য কোথাও খুঁজে পেতে সক্ষম হয়নি।
ডিলান মার্কো

4
@ ডিলানমার্কো রেল ৪-এ আপগ্রেড করার লিংকটি হ'ল বইটি এখন সিসি লাইসেন্সের আওতায় প্রকাশ করা হয়েছে github.com/alindeman/upgradingtorails4
Ivar

4
এর সাথে কারাগারের distinctপরিবর্তে 5 টি ব্যবহার করুন uniq। আরও তথ্যের জন্য এই উত্তর দেখুন ।
নিক নিলভ

5

ডিলানস জবাব ছাড়াও, যদি আপনি মডিউলটির সাথে সহযোগিতা প্রসারিত করে চলেছেন তবে নিশ্চিত হয়ে নিন যে আপনি এটিকে স্কোপ ব্লকে (আলাদাভাবে নির্দিষ্ট করে দেওয়ার বিপরীতে) শৃঙ্খলাবদ্ধ করেছেন, যেমন:

has_many :donors,
  -> { extending(DonorExtensions).order(:name).uniq },
  through: :donations

হতে পারে এটি কেবল আমার তবে কোনও সমিতি প্রক্সি প্রসারিত করার জন্য স্কোপ ব্লক ব্যবহার করা খুব অপ্রয়োজনীয় বলে মনে হচ্ছে।

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