পেরেলস - সক্রিয় রেকর্ডসে নেস্টেড অন্তর্ভুক্ত?


166

আমার কাছে আনা ইভেন্টগুলির একটি তালিকা রয়েছে। আমি এই ইভেন্টের সাথে যুক্ত প্রতিটি ব্যবহারকারী এবং প্রতিটি ব্যবহারকারীর সাথে সম্পর্কিত প্রতিটি প্রোফাইল অন্তর্ভুক্ত করার চেষ্টা করছি। ব্যবহারকারীরা অন্তর্ভুক্ত হন তবে তাদের প্রোফাইলগুলি নয়।

আমি এই কিভাবে করব

Event.includes(:users [{profile:}])

দস্তাবেজগুলি পরিষ্কার বলে মনে হচ্ছে না: http://guides.rubyonrails.org/active_record_querying.html

উত্তর:


406

আমি বিশ্বাস করি নিম্নলিখিতটি আপনার জন্য কাজ করা উচিত।

Event.includes(users: :profile)

আপনি যদি ইতিমধ্যে অন্তর্ভুক্ত কোনও অ্যাসোসিয়েশনের (আমরা একে সি বলে ডাকবো) অন্তর্ভুক্ত করতে চান তবে আপনি উপরের বাক্য গঠনটি ব্যবহার করবেন। তবে আপনি যদি ডিটিকেও অন্তর্ভুক্ত করতে চান যা বি এরও একটি সমিতি, আপনি যখন রেল গাইডে উদাহরণ হিসাবে দেওয়া অ্যারেটি ব্যবহার করবেন তখন ।

A.includes(bees: [:cees, :dees])

আপনি বাসা চালিয়ে যেতে পারেন এর মধ্যে অন্তর্ভুক্ত রয়েছে (যদি আপনার আসলে দরকার হয়)। বলুন যে এ জেড এর সাথেও যুক্ত, এবং সি সি ই এবং এফ এর সাথে সম্পর্কিত that

A.includes( { bees: [ { cees: [:ees, :effs] }, :dees] }, :zees)

এবং ভাল মজাদার জন্য, আমরা আরও বলব যে E জে এবং এক্স এর সাথে সম্পর্কিত, এবং ডিটি ওয়াইয়ের সাথে যুক্ত that

A.includes( { bees: [ { cees: [ { ees: [:jays, :exes] }, :effs] }, { dees: :wise } ] }, :zees)

11
আপনি কীভাবে অন্তর্ভুক্ত মডিউলগুলির জন্য শর্ত যুক্ত করবেন ..? :)
অরূপ রক্ষিত

1
কিভাবে সেখানে একটি অর্ডার যুক্ত করবেন?
ফ্লোরিয়ান উইডটম্যান

6
এটি সেই icalন্দ্রজালিক উত্তরগুলির মধ্যে একটি যা আমি বহু বছর পৃথক পৃথকভাবে পেয়েছি এবং প্রতিবার আমার পাছা সংরক্ষণ করে। ডক্সগুলির মতো দেখতে এটি হওয়া উচিত
এন্ড্রু

2
এই গাইডটিকে সবচেয়ে ক্লান্তিকর এক হিসাবে তৈরি করার জন্য: A.includes( { bees: { cees: {:dees, :ees} } })- রাশিয়ান পুতুলের মতো নির্মাণের জন্য (যেমন এ বিতে অন্তর্ভুক্ত রয়েছে, যার মধ্যে সি ... এবং আরও রয়েছে)
আলেকজান্ডার গর্গ

2
শর্ত যুক্ত করতেA.includes(bees: :cees).where(bees: { cees: { flagged: false }}).order("a.bees DESC").order("a.cees ASC")
Fabrizio Bertoglio

14

যদি কেউ respond_toনেস্টেড জসন তৈরি করতে কোনও ব্লক করছেন , আপনি এর মতো কিছু করতে পারেন:

respond_to do |f|
  f.json do
    render json: event.to_json(include: {users: {include: :profile} }), status: :ok
  end
end

1
আমি মনে করি আপনি বোঝাতে চেয়েছিলেন as_json- অন্যথায় এটি JSON স্ট্রিংকে রেন্ডার করে।
মেকোহি

10

জো কেনেডি এর সমাধান দেখুন।

এখানে আরও পঠনযোগ্য উদাহরণ (ভবিষ্যতের আমার জন্য)।

includes(
  :product,
  :package, {
    campaign: [
      :external_records,
      { account: [:external_records] },
      { agency: [:external_records] },
      :owner,
      :partner,
    ]
  }
)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.